我们使用两个不同的IDE,Netbeans 8.2和Eclipse 4.7.2。我们正在使用JUnit 4.11运行JMock 2.8.3,并且在Netbeans和Jenkins(使用Netbean的Ant脚本)下进行测试失败,但是在Eclipse下传递。
错误是"并非所有期望都得到满足"。
但是,如果我在测试结束时添加一个assertIsSatisfied()调用,它将失败,并在Eclipse下显示正确的错误消息。
我可以用一个简单的例子重现这个:
public class FailureExample {
private static class Example {
public void doSomething() { }
public void doSomethingElse() { }
}
// Mocks
@Rule public JUnitRuleMockery context = new JUnitRuleMockery(){{
setThreadingPolicy(new Synchroniser());
setImposteriser(ClassImposteriser.INSTANCE);
}};
public Example instance;
@Before
public void setUp() throws Exception {
// Mocks
instance = context.mock(Example.class);
}
@Test
public void testExample() {
context.checking(new Expectations() {{
oneOf(instance).doSomething();
oneOf(instance).doSomethingElse();
}});
instance.doSomething();
}
}
在Eclipse中我还需要做些什么来使JMock按预期运行吗?
更新 我尝试创建一个新的Java项目以及一个新的Maven项目(如Till Brychcy所述)。我尝试删除为我的项目列出的所有jar文件,然后读取它们,但它失败了。
我非常接近放弃Eclipse以支持Netbeans,仅仅因为我有真正的工作要做,而不仅仅是与Eclipse战斗。
答案 0 :(得分:0)
我无法重现你的问题。 使用Eclipse 4.7.2和Eclipse从当前主服务器构建我得到:
java.lang.AssertionError: not all expectations were satisfied
expectations:
expected once, already invoked 1 time: example.doSomething()
! expected once, never invoked: example.doSomethingElse()
what happened before this:
example.doSomething()
我使用了以下pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>jmockbug</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>jmockbug</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock</artifactId>
<version>2.8.3</version>
</dependency>
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-junit4</artifactId>
<version>2.8.3</version>
</dependency>
<dependency>
<groupId>org.jmock</groupId>
<artifactId>jmock-legacy</artifactId>
<version>2.8.3</version>
</dependency>
</dependencies>