我们的项目启用了静态分析,而在进行测试时,我们开始担心是否应该测试NULL检查或静态分析可能已经测试过的任何东西。

我还应该测试那些东西吗?

例如。方法:

@RegEx("bla.*bla")
public static String bar(@Nonnull Foo par1)


我们是否应该对此进行测试:

assertTrue(Pattern.matches(XXX.bar(someFoo)));


然后测试是否传入了NPE引发的NPE?

编辑:我们正在使用Findbugs,但我认为该问题也适用于其他静态代码分析工具。

最佳答案

静态分析器将帮助您找到可能触发NPE的代码路径。 FindBugs进行的分析主要限于单个方法。

如果使用@Nonnull注释常用API的参数,则肯定对分析器(FindBugs)有所帮助。

测试NPE似乎没有任何价值。如果这是一个公共API(重要API)并且空指针正确处理(即:与IllegalArgumentException一起使用),我会看到价值。
这显然是一种意见。测试水平没有真理。

关于java - 如果启用了静态分析,是否在测试用例中执行NULL检查?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38319756/

10-09 06:11
查看更多