IntelliJ IDEA を IDE として使用して、pact-jvm-provider-junitを試しています。
提供された ContractTest の例をテストしています。
import org.junit.BeforeClass;
import org.junit.Before;
import org.junit.ClassRule;
import au.com.dius.pact.provider.junit.State;
import au.com.dius.pact.provider.junit.Provider;
import au.com.dius.pact.provider.junit.target.TestTarget;
import au.com.dius.pact.provider.junit.target.Target;
import au.com.dius.pact.provider.junit.target.HttpTarget;
import au.com.dius.pact.provider.junit.TargetRequestFilter;
import org.apache.http.HttpRequest;
import au.com.dius.pact.provider.junit.PactRunner;
import au.com.dius.pact.provider.junit.loader.PactFolder;
import au.com.dius.pact.provider.junit.loader.PactUrl;
import au.com.dius.pact.provider.junit.VerificationReports;
import com.github.restdriver.clientdriver.ClientDriverRule;
import org.junit.runner.RunWith;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import static com.github.restdriver.clientdriver.RestClientDriver.giveEmptyResponse;
import static com.github.restdriver.clientdriver.RestClientDriver.onRequestTo;
@RunWith(PactRunner.class) // Say JUnit to run tests with custom Runner
@Provider("uicc_repository") // Set up name of tested provider
//@PactFolder("rs") // Point where to find pacts (See also section Pacts source in documentation)
@PactUrl(urls = {"file:///C:/IdeaProjects/src/pack-test-provider/resources/test_consumer-test_provider.json"}) // Point where to find pacts (See also section Pacts source in documentation)
@VerificationReports(value = {"markdown","json"}, reportDir = "C:/IdeaProjects/src/pack-test-provider/resources")
public class ContractTest {
// NOTE: this is just an example of embedded service that listens to requests, you should start here real service
@ClassRule //Rule will be applied once: before/after whole contract test suite
public static final ClientDriverRule embeddedService = new ClientDriverRule(6060);
private static final Logger LOGGER = LoggerFactory.getLogger(ContractTest.class);
@BeforeClass //Method will be run once: before whole contract test suite
public static void setUpService() {
//Run DB, create schema
//Run service
//...
}
@Before //Method will be run before each test of interaction
public void before() {
// Rest data
// Mock dependent service responses
// ...
embeddedService.addExpectation(
onRequestTo("/data"), giveEmptyResponse()
);
}
@TestTarget // Annotation denotes Target that will be used for tests
public final Target target = new HttpTarget(6060); // Out-of-the-box implementation of Target (for more information take a look at Test Target section)
@State("default") // Method will be run before testing interactions that require "default" or "no-data" state
public void toDefaultState() {
// Prepare service before interaction that require "default" state
// ...
System.out.println("Now service in default state");
LOGGER.info("Now service in default state");
}
}
しかし、テストを実行しようとすると (Run -> Run ContractTest)、テストがまったく実行されていないようです:
2017 年 3 月 15 日 3:24:00 PM org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry loadTestEngines 情報: ID を持つ TestEngine が検出されました: [junit-jupiter、junit-vintage] 2017 年 3 月 15 日 3:24:01 PM org. junit.vintage.engine.execution.TestRun lookupTestDescriptor 警告: クラス rs.ContractTest のランナー au.com.dius.pact.provider.junit.PactRunner が不明な説明のイベントを報告しました: rs.ContractTest。無視されます。
プロセスは終了コード 0 で終了しました
IntelliJ でテストを実行する方法に問題があるのか 、それとも pact-jvm-provider "runner" に何かが欠けているのかわかりません。
このトピックに関するヘルプに感謝します。
ありがとう!