それはすべての退屈なものを削除しての私のコードに焦点を当ててみましょう、私は春のブートを使用していますが、すべての試験例は、JUnitのを使用して、私はキュウリを使用したいですか?cucumber-jvmでSpringブートが動作していますか?
誰かが、物事を開始し、すべての自動設定や配線を行うと、私のステップの定義は、ものを行うために、自動有線Beanを使用できるようにキュウリ、春を取得するために、正しい方向に私を指すことができますか?
それはすべての退屈なものを削除しての私のコードに焦点を当ててみましょう、私は春のブートを使用していますが、すべての試験例は、JUnitのを使用して、私はキュウリを使用したいですか?cucumber-jvmでSpringブートが動作していますか?
誰かが、物事を開始し、すべての自動設定や配線を行うと、私のステップの定義は、ものを行うために、自動有線Beanを使用できるようにキュウリ、春を取得するために、正しい方向に私を指すことができますか?
はあなたのステップ定義クラスに次のように使用してみてください:
@ContextConfiguration(classes = YourBootApplication.class,
loader = SpringApplicationContextLoader.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class MySteps {
//...
}
また、あなたのクラスパス上のキュウリ、スプリングモジュールを持っていることを確認してください。
Jake - 私の最終的なコードは、各キュウリのステップ定義クラスが拡張されたスーパークラスの次の注釈を持っていました。これはWebベースのモックへのアクセスを提供し、テストのためのさまざまなスコープを追加し、 WebContextTestExecutionListenerがある
@ContextConfiguration(classes = {MySpringConfiguration.class}, loader = SpringApplicationContextLoader.class)
@WebAppConfiguration
@TestExecutionListeners({WebContextTestExecutionListener.class,ServletTestExecutionListener.class})
:@PaulNUKへ
public class WebContextTestExecutionListener extends
AbstractTestExecutionListener {
@Override
public void prepareTestInstance(TestContext testContext) throws Exception {
if (testContext.getApplicationContext() instanceof GenericApplicationContext) {
GenericApplicationContext context = (GenericApplicationContext) testContext.getApplicationContext();
ConfigurableListableBeanFactory beanFactory = context
.getBeanFactory();
Scope requestScope = new RequestScope();
beanFactory.registerScope("request", requestScope);
Scope sessionScope = new SessionScope();
beanFactory.registerScope("session", sessionScope);
}
}
}
ごめんねえ、それはあなたに戻って取得するために私にそう長くかかりました。私はあまりにも多くの評判を上げ、私は投稿できませんでした。私はそれをTestExecutionListenersなしのサンプルプロジェクトで動作させることができましたが、@EnableAutoConfiguration(exclude = {RabbitAutoConfiguration.class})の周りのメインプロジェクトでは問題はありません。しかし、すべての助けをありがとう。 – jakehschwartz
本当に便利です - ありがとう! – declension
おかげで、私は動作しますアノテーションのセットを見つけました。
私は私の質問にhere
マイStepDefsクラスの答えを投稿注釈を必要と: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = DemoApplication.class, loader = SpringApplicationContextLoader.class) @WebAppConfiguration @IntegrationTest
私はリンクの答えでソースコードでリポジトリもあります。
私のアプローチは非常に簡単です。 Before
フック(env.groovy
ではCucumber-JVM for Groovyを使用しています)では、次のようにします。
package com.example.hooks
import static cucumber.api.groovy.Hooks.Before
import static org.springframework.boot.SpringApplication.exit
import static org.springframework.boot.SpringApplication.run
def context
Before {
if (!context) {
context = run Application
context.addShutdownHook {
exit context
}
}
}
これは完全に私のために働いた、ありがとう。 –
@ PedroLopezこれは物語ファイルを見つけることができますか?私のビルドでは、物語は実行されません。 問題は、あなたがランナーとしてCucumber.classを使用する場合は話が発見されているが、あなたはSpringJUnit4ClassRunner TomcatのISTのstartetを使用していますが、話が実行されていない場合はTomcatは、startetではありません。オープンな機能拡張があります:https://github.com/spring-projects/spring-boot/issues/2525 この問題はありませんか? – FunThomas424242
キュウリランナーは、実際にはランナークラスの別のクラスで使用する必要があります。これはステップ定義のためのものです。唯一のことは、@Ignoreでこのクラスに注釈を付けて、テストスイート全体を実行するときにユニットテストとして実行されないようにすることです。お役に立てれば。 –