是否有任何干净的方法来测试给定的String是否与枚举名称匹配?
现在我得到了
Expected: is <SUNDAY>
Actual: SUNDAY
我希望避免在每次检查中添加.name()
assertThat("SUNDAY", is(SUNDAY.name()))
某事
assertThat("SUNDAY", isEnum(SUNDAY))
我不是在问我如何写自己的Matcher
,我在问是否已经建立了一些我似乎无法找到的东西。
答案 0 :(得分:4)
选项1
您可以使用Enum.valueOf(DAYS.class, "Sunday")
。我只是命名你的枚举DAYS
,因为我不知道它的名字。这就是Enum.valueOf
的作用:
返回指定枚举类型的枚举常量 指定的名称。名称必须与使用的标识符完全匹配 声明此类型的枚举常量。 (无关的空白 不允许使用字符。)
换句话说,如果存在这样的枚举值,您将获得枚举实例,否则您将获得异常。因此,您可以断言结果并检查是否获得值或抛出异常。
选项2
您可以按如下方式创建HashSet
:
HashSet<String> set = new HashSet<>();
for (final DAYS day : EnumSet.allOf(DAYS.class)) {
set.add(day.name());
}
然后检查特定日期是否设置contains
:
assertTrue(set.contains("SUNDAY")); //Hope I'm using the assertion syntax right. Haven't used this framework before.