希望有人能帮助我,我的头撞墙了一段时间,似乎无法突破。我尝试了多个示例并进行了无休止的搜索,但似乎无法找出我所缺少的。有很多例子要遵循,但大多数是弹簧应用程序,我对弹簧一无所知,所以我不知道我是否试图将弹簧与非弹簧代码混合......
这不是一个弹簧应用程序,我也不希望它是。我试图让这只是一个简单的java生产者验证。尽可能简单...
我有一份很好的合同,我能够使用 JS 成功验证合同但想使用 JAVA。
我的代码中有太多的导入,但目前不知道哪些不重要,哪些是重复的。
我有一些编译错误,但似乎无法找到解决方法。我注意到代码中的编译错误。我想我很接近,但目前还不知道。
pactTestTemplate 方法是实际进行合同验证的方法吗?那么这就是我从单元测试中调用的方法吗?在这一点上真的很困惑背景中发生的所有魔法......
如果你能做到这一点,谢谢...
package testWorkContract;
import au.com.dius.pact.provider.junit.PactRunner;
import au.com.dius.pact.provider.junit.Provider;
import au.com.dius.pact.provider.junit5.*;
import au.com.dius.pact.provider.junit5.PactVerificationContext;
import au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider;
import org.junit.jupiter.api.extension.*;
import org.junit.runner.RunWith;
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.target.HttpTarget;
import au.com.dius.pact.provider.junit.target.Target;
import au.com.dius.pact.provider.junit.target.TestTarget;
import org.apache.http.HttpRequest;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.runner.RunWith;
import au.com.dius.pact.provider.junit.*;
@PactFolder("/temp/pacts")
@RunWith(PactRunner.class) // Say JUnit to run tests with custom Runner
@Provider("work") // Set up name of tested provider
public class PactProvider {
@TestTarget // Annotation denotes Target that will be used for tests
public final HttpsTestTarget target = new HttpsTestTarget("127.0.0.1", 443);
@BeforeClass // Method will be run once: before whole contract test suite
public static void setUpService() {
}
@Before // Method will be run before each test of interaction
public void before() {
}
// JUST A QUICK TEST METHOD TO MAKE SURE MY UNIT TEST CAN WORK...
public int testService() {
return 0;
}
@TestTemplate // THIS IS AN ERROR, CAN'T FIND @TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactTestTemplate(PactVerificationContext context, HttpRequest request) {
context.verifyInteraction();
}
}
这是我的依赖项,也是第一次设置 maven,所以那里可能会出现问题:
<properties>
<json-schema-validator.version>3.3.0</json-schema-validator.version>
<junit.jupiter.version>5.5.2</junit.jupiter.version>
<pact.version>4.0.10</pact.version>
<maven.surefire.version>3.0.0-M5</maven.surefire.version>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.3.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>au.com.dius</groupId>
<artifactId>pact-jvm-consumer-junit5</artifactId>
<version>${pact.version}</version>
</dependency>
<dependency>
<groupId>au.com.dius</groupId>
<artifactId>pact-jvm-provider-junit</artifactId>
<version>${pact.version}</version>
</dependency>
<dependency>
<groupId>au.com.dius</groupId>
<artifactId>pact-jvm-provider-junit5</artifactId>
<version>${pact.version}</version>
</dependency>
</dependencies>