我在一个类中有一个函数:
public String covertToLowerCase(String sliceName) {
sliceName = sliceName.trim().toLowerCase();
sliceName = sliceName.replaceAll("\\.txt$|\\.dat$", "");
return sliceName;
}
我想用Junit测试一下。我创建了一个单独的测试文件,其中包含以下内容:
public class MyControllerTest {
private MyController myController;
private static final String SLICE_NAME = "Hello World";
@Test
public void shouldReturnSanitizedString() throws Exception {
String expected = myController.covertToLowerCase(SLICE_NAME);
// assert that actual and expected are same
}
我无法理解如何测试这个,所有其他示例都是特定于它们的功能。我只是想让函数返回一个已清理的字符串?我怎么能这样做呢?
答案 0 :(得分:2)
你要测试,首先你必须准备要测试的数据,输入值,期望值=>呼叫测试功能,输入值=>通过test =>下的函数获得实际值返回值用实际值断言期望值。这是您可以使用的list of assert function。
public class MyControllerTest {
private MyController myController;
private final String SLICE_NAME = "Hello World";
private final String expected = "hello world";
@Test
public void shouldReturnSanitizedString() throws Exception {
String actual = myController.covertToLowerCase(SLICE_NAME);
// assert that actual and expected are same
assertEquals(expected, actual);
}
}
答案 1 :(得分:2)
为了记录,更多"现实世界"测试看起来像:
public class MyControllerTest {
private MyController underTest = new MyController();
@Test(expected=NullPointerException.class)
public void testConvertToLowerCaseWithNull() {
underTest.convertToLowerCase(null);
}
以上只是一个例子 - 您的方法可以决定例如抛出IllegalArgumentException。并且您希望确保生产代码 实际上为无效案例抛出异常。
@Test
public void testConvertToLowerCaseWithEmptyInput() {
assertThat(underTest.convertToLowerCase(""), is(""));
}
我建议使用assertThat()
和hamcrest匹配器 - 因为生成的代码更易于阅读和理解。
然后你继续添加更多的测试用例。退后一步,你就会想到要在这里测试的事情。你想确保" e"留下" e",那" E"变成" e" ......等等。
其他事情: