6

我不知道为什么,但我总是这样写我的 JMock 测试:

@Test
public void testMyThing() throws Exception {
    mockery.checking(new Expectations() {{
        oneOf(mockObj).foo();
    }});
    testObj.bar(); // calls mockObj.foo()
    mockery.assertIsSatisfied();
}

但是当有很多测试时,是否更好地进行assertIsSatisfied拆卸?

@After
public void tearDown() throws Exception {
    mockery.assertIsSatisfied();
}
4

2 回答 2

5

推荐的方法是使用 JMock runner。用注释类

@RunWith(JMock.class)
public class TestClass {

这将在测试生命周期的正确位置调用断言。拆解不是正确的地方,因为可能无法正确报告故障,并且可能会弄乱其他清理工作。

我们在存储库中还有一个可与新的@Rule 基础设施一起使用的嘲弄规则。

于 2011-08-23T22:47:12.573 回答
0

是的,我倾向于在拆解时这样做。它通过将样板文件移出,将各个测试方法的重点放在他们实际测试的内容上@After——对我来说,测试尽可能具有表现力和可读性是至关重要的。

事实上,我有时会更进一步,并使用一个为我JMockSupport处理的基类Mockery(以及提供的便利实现mock(...))。当然,这只是一种方便,绝不是 JUnit 3 中的要求。

于 2011-07-08T12:58:46.733 回答