java - 将值添加到 Java ENUM 以进行测试

标签 java unit-testing testing jmockit

我正在尝试使用 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/

相关文章:

java - 在 thymeleaf 中执行迭代时添加序列号

java - 扩展 GWT 的小部件类

java - Wildfly 11 抛出 404 错误且未找到端点

c++ - 谷歌测试中的数组比较?

testing - 多条件覆盖是否总是意味着分支覆盖?

linux - Linux 服务器上的性能测试方面

java - 我如何在 Java 中确定图像的色彩空间?

angularjs - Angular 1.5 单元测试组件,同时忽略子组件

python - unittest 的tearDown 和setUp 不会以相同的方式更新属性

android - 在 Android 中,在进行 HTTP 调用之前测试 Internet 是否正常工作的最佳方法是什么?