0

ScalaTestに関していくつか質問があります。

ScalaTestを使用してテスト実行ORDERを確認するにはどうすればよいですか、Junit4の@ Suite.SuiteClassesアノテーションを引き続き使用できますか、またはJunitをまったく使用せずに別の方法がありますか?

@RunWith(Suite.class)
@Suite.SuiteClasses({
    FirstTest.class, SecondTest.class
  })
public class MyTestSuite {
  @BeforeClass
  public void setup() {
    public MyDB db = new DB("config");
  }
}

上記をScalaに翻訳するだけで、準備はできていますか?

もう1つの質問は
、「db」フィールドをスイートクラスで使用できるようにするにはどうすればよいですか。Javaでは、フィールドは静的であるため、すべてのスイートクラスから参照できます。
たぶん、参照を保持するコンパニオンオブジェクトを定義しますか?

4

1 に答える 1

3

ScalaTestでは、スイートに0から多数のテストと0から多数のネストされたスイートを含めることができます。スイートのネストされたスイートは、そのnestedSuitesメソッドによって提供され、実行するテストの名前は、そのtestNamesメソッドによって提供されます。一般的な答えは、組み込みのScalaTestスタイルの特性の場合、ネストされたスイートとテストの実行の順序は、nestedSuitesとtestNamesの戻り値に表示される順序によって決定されるということです。したがって、他の方法で必要な順序が得られない場合は、これらのメソッドのいずれかまたは両方をオーバーライドできます。

ただし、テストの順序については、テストが関数であるトレイトの1つを使用する方がおそらくはるかに簡単です。これらのトレイトは、ソースに表示される順序でテストを実行するためです。(対照的に、Suiteはテスト名のアルファベット順にテストを実行します。)したがって、初心者にはFunSuiteを使用することをお勧めします。例えば:

import org.scalatest.FunSuite

class MySuite extends FunSuite {
  test("this one will run first because it appears first") {
    // ...
  }
  test("this one will run second because it appears second") {
    // ...
  }
  test("this one will run third, and so on") {
    // ...
   }
 }

スイートを順番に実行する限り、それが行われることはめったにありません。なぜなら、人々は、作成時に新しいスイートを見つけるためにディスカバリーを使用することを好むからです。しかし、それを行う方法は、nestedSuitesをオーバーライドすることです。1.5では、Suitesクラスはそれを行うための便利な方法です。

import org.scalatest.Suites

class MySuites extends Suites(
  new MyFirstSuite,
  new MySecondSuite,
  new MyThirdSuite,
  new MyFourthSuite
)

次に、MySuitesを実行すると、ネストされたスイートが宣言した順序で実行されます。

于 2011-05-01T13:57:58.370 に答える