2

我正在使用 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()

谢谢。

4

2 回答 2

3

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

通过传入command,表示可以改变对象的状态,需要验证所有可以通过的可能状态。但是,通过使用该 enumeration private,您无法通过它,因为它不在任何其他包范围内。

如果您不希望此枚举暴露太远,您可以将其范围更改为包私有(通过删除private),并将您的测试方法放在同一个类路径中。这样,您的测试方法将能够使用枚举,并且您将能够根据传递给它的内容来验证结果。

没有任何理由对此进行嘲笑 - 您应该传递真实数据并测试该枚举的所有情况以使其彻底。

于 2013-06-04T03:55:55.410 回答
0

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

于 2013-06-05T23:08:36.080 回答