void方法的Java单元测试
首先,我想为我的语言技能道歉,但我的母语不是英语
我有一点源代码,它是:
public void hello(List l){
switch (l.get(0) {
case "hello":
System.out.println("Hello!");
case "world":
System.out.println("World");
break;
}
}
我必须编写一个单元测试,它可以对代码进行测试。但我的技术还不够。谁能帮帮我吗?一些例子、书或其他东西。我不知道该怎么开始
我很感激
谢谢
# 1 楼答案
为了能够测试这个方法,您必须能够告诉系统打印了什么。出来因此,您必须更换系统。由另一个流输出,写入内存,以便在调用方法后可以检查流的内容。这是可行的,但不是那么容易
如果不打印到系统中,您将使您的方法更具可重用性和可测试性。输出时,它返回了一个字符串。您还可以传递一个额外的参数,类型为PrintStream,方法将在其中写入,这将通过传递将写入字节数组的PrintStream来简化测试
# 2 楼答案
您应该将代码分为两种方法—一种方法打印第二种方法的结果,第二种方法可以轻松地进行单元测试
# 3 楼答案
如果该方法为“void”,则显然无法测试该方法是否返回正确的值。但是,您可以测试它是否抛出任何异常。如果您想测试计算,您需要重构代码,使计算成为一个单独的返回值的方法
# 4 楼答案
您可以通过启动一个新的JVM并调用调用该JVM的代码来测试该方法,然后捕获输出,但是
重构代码更简单,因此您可以测试它:提取一个返回字符串的方法,留下一个输出结果的包装器方法,但您测试提取的方法
# 5 楼答案
您可以将outputstream更改为类似这样的模拟流(使用Mockito)
另外,别忘了在你的第一个案例后面放一个
break
,否则它会失败,第二次也会打印出来