我正在对执行某些序列化操作的方法进行单元测试。我打算模拟序列化逻辑。代码如下:
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
我创建了以下模拟对象:
@Mocked FileInputStream mockFIS;
@Mocked BufferedInputStream mockBIS;
@Mocked ObjectInputStream mockOIS;
我已经设置了一个NonStrictExpectations()
块,我希望上面的构造函数调用。
关于如何实现这一目标的任何想法?
答案 0 :(得分:10)
您可以为给定的一组交互指定一组完整的期望值。来自Behavior-based testing with JMockit:
doSomething()方法的可能测试可以解决这个问题 在任意数量之后抛出SomeCheckedException的地方 成功的迭代。假设我们想要(无论出于何种原因) 记录对两者之间相互作用的完整期望 这两个类,我们可以写下面的测试:
@Test
public void doSomethingHandlesSomeCheckedException() throws Exception
{
new Expectations() {
DependencyAbc abc;
{
new DependencyAbc(); // expect constructor
abc.intReturningMethod(); result = 3;
abc.stringReturningMethod();
returns("str1", "str2");
result = new SomeCheckedException();
}
};
new UnitUnderTest().doSomething();
}