当前位置: 首页 > 知识库问答 >
问题:

用Spring Boot和Spock进行集成测试

黄宏大
2023-03-14

使用Spock运行集成测试(例如@integrationtest)的最佳方式是什么?我想引导整个Spring Boot应用程序,并执行一些HTTP调用来测试整个功能。

我可以用JUnit(首先运行应用程序,然后执行测试):

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyServer.class)
@WebAppConfiguration
@IntegrationTest
class MyTest {
   RestTemplate template = new TestRestTemplate();

   @Test
   public void testDataRoutingWebSocketToHttp() {
      def a = template.getForEntity("http://localhost:8080", String.class)
      println a
   }
}

但是有了Spock,应用程序就不会启动了:

@SpringApplicationConfiguration(classes = MyServer.class)
@WebAppConfiguration
@IntegrationTest
class MyTestSpec extends Specification {

   RestTemplate template = new TestRestTemplate();

   def "Do my test"() {
      setup:
      def a = template.getForEntity("http://localhost:8080", String.class)

      expect:
      println a
   }
}
...
dependencies {
   testCompile 'org.spockframework:spock-core:0.7-groovy-2.0'
   testCompile 'org.spockframework:spock-spring:0.7-groovy-2.0'
}
...

共有1个答案

屈升
2023-03-14

问题是,Spock Spring正在寻找Spring的@contextConfiguration注释,但没有找到它。严格地说,MyTestSpec是用@contextconfiguration注释的,因为它是@springapplicationconfiguration上的元注释,但是Spock Spring不将元注释作为其搜索的一部分。有一个问题要解决这个限制。与此同时,你可以解决它。

@SpringApplicationConfiguration所做的就是使用特定于引导的上下文加载器自定义@ContextConfiguration。这意味着您可以通过使用适当配置的@contextconfiguration注释来实现相同的效果:

java prettyprint-override">@ContextConfiguration(loader = SpringApplicationContextLoader.class, classes = MyServer.class)
@WebAppConfiguration
@IntegrationTest
class MyTestSpec extends Specification {
    …
}

Update:为了确保它是清楚的(根据注释,它不是),为了使它工作,您需要在类路径上有org.spockframework:spock-spring

 类似资料:
  • 我有几个繁重的Spring集成测试(是的,这不是最好的方法,我没有时间正确地模拟所有外部dep) 下面是测试的典型注释 由于以下原因,测试会定期失败: 这里有两个问题:1、让测试共存的正确方式是什么?我在surefire插件中设置了forkCount=0。好像有帮助 2.1. 在每次测试期间,我实际上不需要启动所有的

  • 在我的应用程序中有,它有一个操作,如下所示: 现在,我正在测试视图和模型,如下所示: 但是我的测试用例失败了,stacktrace如下: 正在运行2个spock测试。。。第1页,共2页 有什么问题吗。

  • 下面是我的应用程序主类: 但当我运行这个程序时,我得到了一个非常奇怪的错误: groovyx.net.http.restclient:解析'application/json'响应时出错

  • 完成了818个集成测试,0在104001ms运行1个spock测试时失败...失败:CreditServiceSpec groovy.lang.groovyRuntimeException:未能调用构造函数:public org.codehaus.groovy.grails.test.support.grailstestautoWirer(org.springframework.context.a

  • 问题内容: 我使用spock编写测试用例,使用jenkins运行和发布我的测试用例。我能够得到报告的代码覆盖率,但是声纳 仅 向我显示 Java 单元测试用例;在 常规测试案例是完全缺失 以下pom.xml用作参考 https://github.com/kkapelon/java-testing-with- spock/blob/master/chapter7/spring-standalone-