使用ant构建的Spock单元测试
我正在和斯波克写一个单元测试。我想使用spock检查数组的所有元素使用ant构建的Spock单元测试,ant,junit,spock,Ant,Junit,Spock,我正在和斯波克写一个单元测试。我想使用spock检查数组的所有元素 when: then: 街区。我从接受的答案中找到了语法。基于此,我写了这样的东西- then: myArray.every { (it >= 0) && (it < 10) } 在查看ant构建创建的类文件时,我看到 public void $spock_feature_0_0(Object obj){ ... ... class __spock_feature_0_0_closure1
when: then:
街区。我从接受的答案中找到了语法。基于此,我写了这样的东西-
then:
myArray.every { (it >= 0) && (it < 10) }
在查看ant构建创建的类文件时,我看到
public void $spock_feature_0_0(Object obj){
...
...
class __spock_feature_0_0_closure1 extends Closure implements GeneratedClosure {
}
...
...
new __spock_feature_0_0_closure1()
}
因此,似乎无法使用反射访问闭包!!有什么想法吗?
是我的ant groovy配置搞砸了(正如我前面所说的,更简单的测试对我有用,所以我希望不会!),还是我对Spock的期望太高了
这个场景的一个例子-
下面的junit也无法运行,并出现相同的错误-
更新(2月29日-16日)-根据目前的讨论,问题似乎出在Ant身上。只有使用/编译到本地类的junit和groovy/Spock测试给出了错误。较简单的案例效果良好 你能公布你的整个斯波克测试吗?它是否扩展了规范?嗨kazanaki,我添加了一个示例供您参考。您的测试在Spock web控制台中运行良好。所以我认为您的设置是错误的(考虑到它在Intellij中也可以工作),谢谢您的检查。我知道设置有问题。“.every”语句编译成字节码的本地类。我看了一下,写了一个junit测试,结果也失败了,真让我吃惊!!所以我想我可以把范围缩小到蚂蚁。但不确定具体是什么。(使用junit测试更新了主要注释,ant环境信息)。想法?你能把你的整个斯波克测试都贴出来吗?它是否扩展了规范?嗨kazanaki,我添加了一个示例供您参考。您的测试在Spock web控制台中运行良好。所以我认为您的设置是错误的(考虑到它在Intellij中也可以工作),谢谢您的检查。我知道设置有问题。“.every”语句编译成字节码的本地类。我看了一下,写了一个junit测试,结果也失败了,真让我吃惊!!所以我想我可以把范围缩小到蚂蚁。但不确定具体是什么。(使用junit测试更新了主要注释,ant环境信息)。思想?
public void $spock_feature_0_0(Object obj){
...
...
class __spock_feature_0_0_closure1 extends Closure implements GeneratedClosure {
}
...
...
new __spock_feature_0_0_closure1()
}
public class SpockTest extends Specification{
public def "example"(){
given:
int[] arr = new int[5];
when:
arr[0] = 1;
then:
arr.every { (it >= 0) }
}
}
public class TestClass {
public int test1() {
class testInner {//local class
int a = 100;
public int getA() {
return a;
}
}
return new testInner().getA();
}
@Test
public void test2() {
System.out.println(test1());
assert 100 == test1();
}
}