gpt4 book ai didi

unit-testing - 删除 JMockit 中先前定义的期望

转载 作者:行者123 更新时间:2023-12-04 04:16:33 26 4
gpt4 key购买 nike

我有一个用 JMockit NonStrictExcpection() 模拟的对象在 @Before/setUp()我的测试类的方法,以便它返回我的测试类正常执行所期望的值。

这对于我的所有测试方法都很好,除了我想测试此代码的非正常操作的单个测试。

我尝试在测试方法中创建一个新的期望,我认为它会覆盖 setUp 方法中的期望,但我发现 setUp 方法中的期望正在抑制新的期望。

当我删除 setUp 期望时,测试方法会按预期运行(但我所有的其他测试自然会失败)。

我应该如何编码我的测试类,以便我可以用最少的代码为每个测试正确定义期望? (我知道我可以将期望代码复制/粘贴到每个测试方法中,但如果可以避免的话,我不想这样做)。

我的测试代码看起来像这样(注意,这是一种伪代码,不能编译,但你明白了):

public class TestClass{

@Before
public void setUp(){

// Here I define the normal behaviour of mockObject
new NonStrictExpectations() {{
mockObject.doSomething();
result = "Everyting is OK!";
}};

// Other set up stuff...

}

// Other Tests...

/**
* This method tests that an error when calling
* mockObject.doSomething() is handled correctly.
*/
@Test(expected=Exception.class)
public void testMockObjectThrowsException(){

// This Expectation is apparently ignored...
new NonStrictExpectations() {{
mockObject.doSomething();
result = "Something is wrong!";
}};

// Rest of test method...

}
}

最佳答案

您可以更好地使用 MockUp 进行基于状态的测试。在每个测试方法中定义你想要的 Mockup。您可以在每次测试结束时调用 MockUp 的 tearDown 方法来移除 mock。

It is described here

关于unit-testing - 删除 JMockit 中先前定义的期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4956910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com