import org.junit.Test;
import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
import edu.umd.cs.findbugs.annotations.NonNull;
@DefaultAnnotation(NonNull.class)
public class FooTest {
private Foo foo;
@Before
public void setUp() throws ParseException {
foo = ...;
}
@Test
public void testScenario1() {
foo.getId();
...
}
}
这会导致 findbugs 失败:
NP: Nonnull field foo is not initialized
by new FooTest( (NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR)
这是为什么?FindBugs 没有看到这是一个 junit 测试吗?(因此在执行每个测试之前调用 setUp())
一种解决方法是添加此类注释:
@SuppressWarnings(
value="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR",
justification="it is initialized in setUp()")
但这不是很好。有更好的主意吗?