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() が呼び出されます)
1 つの回避策は、次のクラス アノテーションを追加することです。
@SuppressWarnings(
value="NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR",
justification="it is initialized in setUp()")
しかし、それはあまりいいことではありません。より良いアイデアはありますか?