我正在使用PowerMock / EasyMock并希望测试一个具有私有枚举的类,如下所示:
public class GenerateMove {
private Command current;
private enum Command {
GO, BACK, TURN
}
public move() {
if (Command.GO.equals(current)) {
// do something
}
}
}
我无法模拟Command枚举。有没有这样做?否则,我如何测试// do something
方法中的move()
代码?
感谢。
答案 0 :(得分:3)
通常,私有字段与内部函数或类的内部状态相关 - 实质上,它是您要测试的内容。
通过传递command
,表示您可以更改对象的状态,并且需要验证可以传递的所有可能状态。但是,通过使用枚举private
,您无法传递它,因为它不在任何其他包范围内。
如果您不希望此枚举远远地暴露 ,您可以将其范围更改为package-private(通过删除private
),并将您的测试方法更改为相同的类路径。这样,您的测试方法就可以使用枚举,并且您将能够根据传递给它的内容验证结果。
没有任何理由嘲笑 - 你应该传递真实数据并测试该枚举的所有情况是彻底的。
答案 1 :(得分:0)
我认为不需要嘲笑枚举。您可以直接使用枚举成员。 要测试您的移动方法,所有关于您拥有的代码都是如此。如果您有任何外部依赖类对象,Mocking将帮助您。