Junit 如何检查字符串是否等于两个字符串之一?
这似乎是一个超级简单的问题,但我就是无法弄清楚。
我只是试图断言字符串等于“string1”或“string2”。
这是我尝试过的,但两者都没有明显不起作用。
assertEquals(d.getFormType(), "string1") || assertEquals(d.getFormType(), "string2");
assertEquals(d.getFormType(), "string1" || "string2");
这似乎是一个超级简单的问题,但我就是无法弄清楚。
我只是试图断言字符串等于“string1”或“string2”。
这是我尝试过的,但两者都没有明显不起作用。
assertEquals(d.getFormType(), "string1") || assertEquals(d.getFormType(), "string2");
assertEquals(d.getFormType(), "string1" || "string2");
我建议你使用Hamcrest匹配器。它们通过 集成到 JUnit 中,但您还需要下载并安装 hamcrest-all.jar。assertThat()
使用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));
您可以使用 :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"));