Spring Cloud Contract 不适用于 Surefire 2.20

Spring Cloud Contract does not work with Surefire 2.20

我正在尝试 Spring Cloud Contact:我的 spring-boot 应用程序中有一个端点“/greeting”,它 returns "Hello World!".

合同如下:

request { 
    method 'GET' 
    url '/greeting' 
    headers { 
        contentType('application/json')
    }
}
response { 
    status 200 
    body([ 
           "content": "Hello, World!"
    ])
}

我的测试class:

public class ExampleJavaConsumerPactTestIT {

@Before
public void setup() {
    RestAssuredMockMvc.standaloneSetup(new GreetingController());
}

@Test
public void aQuickTest(){
}

}

一切正常:如果我将上面的合同更改为 "content": "Hello!",则测试失败。

但是,当我添加对用户 Surefire 插件的依赖时:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <configuration>
                <includes>
                    <include>**/*IT.java</include>
                </includes>
            </configuration>
        </plugin>

然后我运行用错误的合约(content": "Hello!")再次测试,测试应该会失败,但实际上并没有。

有什么问题吗?

您的设置有误。生成的测试称为 ContractVerifierTest,因此您的任何个人资料都不会选择它。只需将 <include>**/*ContractVerifierTest.java</include> 行添加到您的 surefire 配置中。