if (contents != null
&& contents.isDataFlavorSupported(DataFlavor.stringFlavor) ) {
try {
return (String) contents.getTransferData(DataFlavor.stringFlavor);
}
catch (Exception ex){
return null;
}
}
return null;
}
很可能我在这个方法中测试的有点太多。最好将一些测试转移到装备中。无论如何,尽一切办法进行测试。[Page]
通过代码结构进行测试
当您已经测试了应用程序的基本功能,考虑代码中的替代路径就变得非常重要了。在大多数语言中,您可以按照下面的步骤分解您的测试:
为每个程序包或者模板编写一个测试。
当每个程序包都有了至少一个测试,再为每一个类编写一个测试。
当每个类都有了至少一个测试,再为每一个方法编写一个测试。
当每个方法都有了至少一个测试,使用一个代码覆盖率工具如 Cobertura 为每个分支编写一个测试,直到每一行代码都能够被测试。
您也可以在第 4 步之前使用一个代码覆盖率工具,但是我宁愿您手动完成前面的步骤。虽然很多类、程序包和方法都可以通过功能测试进行测试,但是当您从一个程序员的角度而不是从一个用户的角度查看程序时,经常会发现不同的问题。
实际上,在很多情况下,您从来都不会接触到第 4 步。您完全没有时间或者预算来编写每个可能的测试。这样也可以,因为做一些测试和不作测试的区别比做所有的测试和做一些测试的区别更大更重要。
自动测试
可以使用反射生成一个测试骨架。这样能够更容易找到您需要测试的所有公有方法。每个测试都像这样开始:
public void testMethodName() {
fail(\"Test Code Not Written Yet\");
}
这种方法不好的一面是会立刻得到成百上千个失败的测试。一个可供选择的方法是在每个测试中添加一个 TODO 注释而不是完全失败。然后当时间允许时,您再检查并补充这些测试。
public void testMethodName() {
// TODO fill in test code
}
如果您使用的是 JUnit 4,您能够简单地将测试注释为 @Ignore,直到您将它们填写完,例如:
@Ignore public void testMethodName() {
// TODO fill in test code
}
文章来源于领测软件测试网 https://www.ltesting.net/