【发布时间】:2019-04-30 18:38:12
【问题描述】:
我正在为下面的 ENum 类编写 JUNIT 测试用例。我下面的课程只会给我运行我的代码的当前机器的主机名。在我编写 JUNIT 测试时,如何模拟下面的类,以便我可以随时更改 getHostName() 方法,以便每当我调用 getDatacenter() 时,它可以通过模拟返回我传递的任何主机名.我不想让它参数化。
我只是想在模拟主机名的同时测试某些情况。
public enum DatacenterEnum {
DEV, DC1, DC2, DC3;
public static String forCode(int code) {
return (code >= 0 && code < values().length) ? values()[code].name() : null;
}
private static final String getHostName() {
try {
return InetAddress.getLocalHost().getCanonicalHostName().toLowerCase();
} catch (UnknownHostException e) {
s_logger.logError("error = ", e);
}
return null;
}
public static String getDatacenter() {
return getHostName();
}
}
【问题讨论】:
-
这些方法必须在枚举类中吗?枚举值和这些方法之间似乎没有任何引用。
-
我已经从代码中删除了这些信息。有几种方法可以相应地从主机名中使用这些详细信息。所以我的主要吸引力中心是嘲笑 getHostName 方法,其他代码围绕它旋转..