好的,我知道这被认为是一种反模式,我当然乐于接受更好的方法。

我有一个枚举值图。我想确保将每个枚举值都分配给某个对象。我的测试看起来像这样。

@Test
public void eachRowRequiresCellCalc()
{
    Model model = new Model();
    EnumValues[] values = EnumValues.values();
    for (EnumValues value : values)
    {
        Assert.assertTrue(String.format("%s must be assigned", value.name()), model.hasEnumValue(value));
    }
}


该方法可以完成我要找的90%的工作。它没有给我显示是否未分配多个枚举值(第一个失败)。 JUnit是否有办法让每个测试多次失败?

最佳答案

理想情况下,一旦失败,您就不想检查所有值,因为它总会失败。

但是我建议一种解决方法,但不确定是否适合您:

@Test
public void eachRowRequiresCellCalc()
{
    Model model = new Model();
    EnumValues[] values = EnumValues.values();
    List<EnumValues> isFalse = new ArrayList<EnumValues>;
    for (EnumValues value : values)
    {
        if(!model.hasEnumValue(value)) {
            isFalse.add(value);
        }
    }

    //Now you have the array of incorrect values in 'isFalse'
}

09-10 20:32