Junit 如何检查字符串是否等于两个字符串之一?

2022-09-02 02:28:56

这似乎是一个超级简单的问题,但我就是无法弄清楚。

我只是试图断言字符串等于“string1”或“string2”。

这是我尝试过的,但两者都没有明显不起作用。

assertEquals(d.getFormType(), "string1") || assertEquals(d.getFormType(), "string2");

assertEquals(d.getFormType(), "string1" || "string2");

答案 1

我建议你使用Hamcrest匹配器。它们通过 集成到 JUnit 中,但您还需要下载并安装 hamcrest-all.jarassertThat()

使用Hamcrest,您可以像这样解决您的问题:

import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;

assertThat(d.getFormType(), isOneOf("string1", "string2"));

如果您无法安装Hamcrest,另一种选择是使用正则表达式:

assertTrue(d.getFormType().matches("(string1|string2)"));

这比组合两个语句更短,也可以说更具可读性:equals()

String actual = d.getFormType();
assertTrue("string1".equals(actual) || "string2".equals(actual));

答案 2

您可以使用 :assertTrue()

assertTrue(d.getFormType().equals("string1") ||
           d.getFormType().equals("string2"));

或使用扩展版本在发生故障时提供更多信息:

assertTrue("Unexpected value for d.getFormType(): " + d.getFormType(),
           d.getFormType().equals("string1") ||
           d.getFormType().equals("string2"));

推荐