被测试类中的mock私有enum



我正在使用PowerMock/EasyMock,并希望测试一个具有私有enum的类,如下所示:

public class GenerateMove {
  private Command current;
  private enum Command {
    GO, BACK, TURN
  }

  public move() {
    if (Command.GO.equals(current)) {
     // do something
    }
  }
}

我无法模拟命令枚举。有办法这样做吗?否则我如何测试move()方法中的// do something代码?

谢谢。

通常,私有字段与内部函数或类的内部状态相关-本质上,它是您要测试的东西。

通过传入command,表明您可以改变对象的状态,您需要验证所有可能通过的状态。但是,通过枚举private不能传递它,因为它不在任何其他包作用域中。

如果您不希望这个枚举暴露得太远,您可以将其作用域更改为package-private(通过删除private),并将您的测试方法置于相同的类路径中。这样,您的测试方法将能够使用枚举,并且您将能够根据您传递给它的内容来验证您的结果。

没有任何理由去模拟——您应该传递真实的数据,并测试该枚举的所有用例,以确保彻底。

我认为没有必要模拟枚举。可以直接使用枚举成员。要测试move方法,关键在于你有什么代码。如果您有任何外部依赖的类对象,那么mock将对您有所帮助。

相关内容

  • 没有找到相关文章

最新更新