【发布时间】:2015-10-23 19:39:26
【问题描述】:
我正在尝试围绕一些遗留代码编写一些单元测试,并且我正在努力研究如何测试一段代码。模式基本上是:
Foo foo = ObjectGetter.getObject(Foo.class);
foo.setVariableX("X");
foo.setVariableY("Y");
foo.performExecute();
//The Foo object has now run some business logic
String bar = foo.getVariableZ();
我已经通过 PowerMock 模拟了静态 ObjectGetter 类,并设法传入一个模拟的 Foo 对象。我现在要做的是在运行 performExecute 时检查变量 X 和 Y 是否设置为 Foo 中的预定值,但实际上并未在 Foo 中运行任何代码。然后当 getVariableZ 被调用时传回某个值。
我可以让 VariableZ 传回我想要的任何东西,但我不知道如何将变量 X 和 Y 设置为特定值的条件!我正在使用 Mockito 和 PowerMock。可以说由于各种原因我无法更改我正在测试的代码。
【问题讨论】:
-
我不明白。如果你在嘲笑
Foo,你为什么要关心它在内部做什么? -
我想确保运行此代码的类已将正确的参数传递给 Foo 否则我将盲目地假设它有并可能错过错误。我实际上并不关心它在内部做了什么,只是它传递了正确的参数。
-
那么您应该将
Foo作为一个单元进行测试,而不是模拟它。
标签: java unit-testing testing mockito powermock