java - 带闭包的 Spock 单元测试以错误 "No runnable methods"结束

标签 java groovy junit gradle spock

我用下面的 then block 写了一个简单的特征方法:

then:
1 * view.setAttachments({ it?.size == 3 })

但是 gradle 测试 失败并出现错误:

initializationError

java.lang.Exception: No runnable methods
    at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:169)
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:104)
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:355)
    ...

initializationError

java.lang.Exception: Test class should have exactly one public zero-argument constructor
    at org.junit.runners.BlockJUnit4ClassRunner.validateZeroArgConstructor(BlockJUnit4ClassRunner.java:147)
    at org.junit.runners.BlockJUnit4ClassRunner.validateConstructor(BlockJUnit4ClassRunner.java:124)
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:355)
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:76)
    ...

我注意到如果我移除闭包,就不会再有错误了

then:
1 * view.setAttachments(_) // everything works well without closure!

似乎 Spock 试图像运行另一种测试方法一样运行闭包...如何避免这种情况?

最佳答案

我在尝试编写 spring-boot 测试时遇到了类似的问题。

不要使用@RunWith(SpringRunner.class),如果您正在使用另一个 junit runner,请尝试删除它。

对我来说,我的 Spock 规范在没有指定 SpringRunner 的情况下正确执行。

关于java - 带闭包的 Spock 单元测试以错误 "No runnable methods"结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19794021/

相关文章:

java - 服务器应用程序挂起 Java 套接字编程

java - 如何创建一个正则表达式来找到确切的字符串长度?

arrays - 具有嵌入式数组的JSON对象保存在Controller中

java - driver.close() 终止测试

unit-testing - 在Netbeans IDE中显示grails测试结果

java - 如何删除这些 html 元素,同时保留格式?

java - WebSphere + 简单的 HTTPS Post = SocketException

java - 当 Java 类未在我的代码中实例化时,是否可以使用 Groovy 覆盖 Java 类中的方法?

Jenkins 作业 DSL : How to read Pipeline DSL script from file?

android - Android的 "Hello, Testing"教程中的JUnit NullPointerException错误