"并非所有期望都得到满足"在Eclipse

时间:2018-05-04 16:17:42

标签: java eclipse jmock

我们使用两个不同的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按预期运行吗?

更新 添加我们项目库的屏幕截图: enter image description here

更新 我尝试创建一个新的Java项目以及一个新的Maven项目(如Till Brychcy所述)。我尝试删除为我的项目列出的所有jar文件,然后读取它们,但它失败了。

我非常接近放弃Eclipse以支持Netbeans,仅仅因为我有真正的工作要做,而不仅仅是与Eclipse战斗。

1 个答案:

答案 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>