断言错误期望失败EasyMock

时间:2016-05-31 19:14:10

标签: junit mocking easymock

我有下一个JUnit测试,它工作正常,但最终在验证它会导致期望失败。我认为这是因为模拟的PsPort与我发送给PsPort的{​​{1}}不同。 有没有其他方法可以测试它?

DataReader

1 个答案:

答案 0 :(得分:0)

你有两个端口对象真的很混乱。创建一个模拟drPort的意义是什么;当你在给被测试的班级提供一个“真正的”端口对象时?

您会看到:您要么创建一个模拟并将其传递给您正在测试的代码(然后您必须为预期的行为设置模拟;您可以事后验证);或者你只为你测试的代码提供“真实”的对象,但是你通常会对调用“被测代码”的结果做一些断言。

因此,从这个意义上讲,代码中至少存在一个问题并不重要:

drMock.guardarDato(datoByte);
replayAll();

在drMock上调用方法后应该调用EasyMock.expectLastCall();但正如所说:由于模拟对象并未真正使用,一方面无关紧要。因为,如果您添加了该语句,您的测试将始终失败;因为你未使用的模拟器永远不会看到你指定它的调用。

为了给你一些指导;这就是你一般做这种测试的方式:

SomeClassYouNeed mockedThingy = createStrict/Nice(SomeClassYouNeed.class);
expect(mockedThingy.foo()).andReturn("whatever");
mockedThingy.bar();
expectLastCall();
replay (mockedThingy);

ClassUnderTest underTest = new ClassUnderTest(mockedThingy);
underTest.doSomething();

verify(mockedThingy)

含义:任何“对象”

a)您的“被测试课程”需要完成其工作 b)你想要/必须以某种方式“控制”

需要被嘲笑;包括所有预期方法调用的“规范”。

然后,您将被模拟的东西提供给您正在测试的代码;执行你想要测试的方法...最后验证mock是否看到了你为它指定的行为。