JUnit 3 の super.tearDown() メソッドの呼び出しで、finally ブロック内で実行されていないものを報告します。 super.tearDown() を呼び出す前に例外をスローする可能性がある tearDown() メソッド内で他のメソッドを呼び出している場合、矛盾やリークを引き起こす可能性があります。

例:


  public class AnotherTest extends CompanyTestCase {
    private Path path;

    @Override
    protected void setUp() throws Exception {
      super.setUp();
      path = Files.createTempFile("abcde", ".tmp");
    }

    @Override
    protected void tearDown() throws Exception {
      Files.delete(path);
      super.tearDown();
    }
  }

改善後のコード:


  public class AnotherTest extends CompanyTestCase {
    private Path path;

    @Override
    protected void setUp() throws Exception {
      super.setUp();
      path = Files.createTempFile("abcde", ".tmp");
    }

    @Override
    protected void tearDown() throws Exception {
      try {
        Files.delete(path);
      } finally {
        super.tearDown();
      }
    }
  }