gpt4 book ai didi

unit-testing - 如何测试枚举类型?

转载 作者:行者123 更新时间:2023-12-03 13:44:50 26 4
gpt4 key购买 nike

我目前正在尝试为一个小型库构建一套或多或少完整的单元测试集。由于我们希望允许存在不同的实现,因此我们希望这组测试是(a)通用的,以便我们可以重用它来测试不同的实现,并且(b)尽可能完整。对于(b)部分,我想知道是否有用于测试枚举类型的最佳实践。因此,例如,我有一个枚举,如下所示:

public enum Month {
January,
February,
...
December;
}

在这里,我想确保所有枚举类型都确实存在。那有必要吗?目前,我正在使用Hamcrests assertThat,如以下示例所示:
assertThat(Month.January, is(notNullValue()));

缺少“一月”枚举将导致编译时错误,可以通过创建缺少的枚举类型来修复该错误。

我在这里使用Java,但是我不介意您的答案是否是另一种语言。

编辑:

正如mkato和Mark Heath都指出的那样,测试枚举可能不是必需的,因为当您使用不存在的枚举类型时,编译器不会进行编译。但是我仍然想测试这些枚举,因为我们要构建一个单独的类似TCK的test.jar,它将在不同的实现上运行相同的测试。所以我的问题更像是:测试枚举类型的最佳方法是什么?

考虑了一下之后,我将上面的Hamcrest语句更改为:
assertThat(Month.valueOf("January"), is(notNullValue()));

现在(当年)1月还没有时,此语句将引发NPE。这种方法有什么问题吗?

最佳答案

对于枚举,仅当它们实际包含方法时,我才对其进行测试。如果它是像您的示例那样的纯仅值枚举,则请不要打扰。

但是,由于您热衷于测试它,因此选择第二个选项要比第一个选项好得多。第一个问题是,如果您使用IDE,则枚举上的任何重命名也会重命名测试类中的枚举。

关于unit-testing - 如何测试枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1079700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com