我有下一个JUnit测试,它工作正常,但最终在验证它会导致期望失败。我认为这是因为模拟的PsPort
与我发送给PsPort
的{{1}}不同。
有没有其他方法可以测试它?
DataReader
答案 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是否看到了你为它指定的行为。