@RunWith(Cucumber)
で実行されるキュウリ試験があります。このテストでは、他のクラスの静的フィールドを使用します。唯一のラインFeature: None
が含まれており、何のステップの定義が存在しないJUnitとキュウリに同じクラスローダーを使用
キュウリテスト
@RunWith(Cucumber)
@CucumberOptions(
features = 'src/test/resources/features/cucumber-test.feature',
glue = ['src/test/groovy']
)
class CucumberTest {
@BeforeClass
static void setUp() {
StaticClass.filed
}
}
静的クラス
class StaticClass {
static {
filed = UUID.randomUUID().toString()
println "Field initialized with value $filed in ${this.classLoader.toString()}\n"
}
static String filed
}
cucumber-test.feature
を:それは次のようになります。このテストを実行すると、出力は
Field initialized with value 649b6d18-fe5a-4993-a92e-74645c3ab07d in [email protected]
Field initialized with value 9639e4de-661f-4ac7-afc9-715cdd17bb35 in [email protected]
です。したがって、静的ブロックは2回実行されましたが、クラスローダーは異なります。 JUnit用のクラスローダーとCucumberランナー用のクラスローダーがあるようです。
StaticClass.filed
setUp
メソッドでコメントすると、スタティックブロックは1回だけ実行されます。唯一Groovyのクラスローダと、この時間は
Field initialized with value 73d1d302-826c-4ec3-a9db-c065b399487f in [email protected]
私は私のプロジェクトで持っている依存関係は、次のとおりです。
dependencies {
compile 'info.cukes:cucumber-groovy:1.2.5'
compile 'info.cukes:cucumber-junit:1.2.5'
compile 'org.codehaus.groovy:groovy-all:2.4.12'
}
両方のJUnitとキュウリのランナーのために同じクラスローダを使用する方法はありますか?
素敵な答え!ありがとう – lolotron