我正在尝试使用 JMockit 进行一些多线程测试在类似于此的代码中:
class scratch_1 {
public static void main(String[] args) {
for (final Car ex: Car.values()) {
System.out.println(ex.getValue());
}
}
}
enum Car {
A(1);
public int getValue() {
return value;
}
private final int value;
Car(final int value){
this.value = value;
}
}
问题是为了测试这个,我的 for 循环应该处理不止一辆 Car(多线程逻辑发生在里面)。但是,我无法更改枚举,因为此时我们只有 1 辆车,但在接下来的 Spring 会有更多。
如何在运行时添加另一辆 Car,仅用于测试?
编辑:
这是我试过但没有用的方法:
新车(2); -> 没有枚举器的新实例
创建一个名为 SpecialCar 的第二个类,其中包含 2 个 SpecialCar,并在测试期间替换它们。
Class SpecialCar extends -> 无法扩展枚举
模拟 Car 的 values() 方法。 所以
new Expectations() {
{
car.values();
result = {car.A... }
问题:没有更多的汽车可以添加到阵列中。
最佳答案
有 Car.values()
。所以要么等待编写单元测试,要么:
添加第二个 Car 值,编写基于 values()
的单元测试,对特定常量不可知。
删除第二个 Car 值,并将所有内容 checkin 版本控制系统。
一些测试可能因为只有一个值而被取消,甚至可能需要检查 if (Car.values().length != 0)
。
关于java - 将值添加到 Java ENUM 以进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52895139/