【发布时间】:2022-11-03 15:39:29
【问题描述】:
例如,方法switchCase()。我如何为它编写测试代码?我可以创建 3 个不同的测试,每个测试使用不同的值,分别对应于 switch case 值,但我想尝试一种更有效的方法来做到这一点。
public void switchCase() {
String input = User.getInput();
switch (number) {
case 1:
size = "small";
break;
case 2:
size = "medium";
break;
case 3:
size = "large";
break;
}
}
我尝试的是使用@RunWith(JUnitParamsRunner.class)、@ValueSource 和@ParameterizedTest。但是,这总是在第一个 when 和 java.lang.Exception: Method testSwitchCase_SUCCESS should have no parameters 处产生 NullPointerException。可以帮助我吗?
@Test
@ParameterizedTest
@ValueSource(strings = {"value1", "value2"})
void testSwitchCase_SUCCESS(String s) {
//have something
when(User.getInput()).thenReturn("Test");
}
【问题讨论】:
-
将 UI 和 IO(从用户或从磁盘/网络获取数据)与转换数据的逻辑分开——您的代码将更容易测试。
标签: java unit-testing junit5