これはあなたのコードです:
public class TestClasse extends TestCase {
@Test public void testLogin(){ System.out.println("TestCase1"); }
@Test public void testLogout(){ System.out.println("TestCase2"); }
@After public void testGenerateReport(){ System.out.println("testCase3") }
}
JUnit 3 を使用しているため (TestCase を拡張しているため)、JUnit は「test」で始まるすべてのメソッドを実行しています。
解決策: TestCase を拡張せず、クラスパスに JUnit 4 (4.11 が最新) が含まれていることを確認してください。また、混乱を避けるために、@After メソッドに testXXX という名前を付けないでください。
Java 7 にアップグレードしたときに動作しなくなったのはなぜですか?
Java 6 以前でメソッドを検索する場合、ほとんどの場合、JVM はソース ファイルで宣言されている順序でメソッドを返します (この場合、testLogin、testLogout、testGenerateReport)。これは Java 7 で変更されたため、メソッドは別の予測不可能な順序で返されます ( Has JUnit4 started support orders of test? Is it意図的な?への私の回答を参照してください)。そのため、Java 7 にアップグレードすると、メソッドが検出されて実行される順序が変更され、メソッドが@After
最初に実行されました。
この問題の背景については、「予測可能性のためにテスト メソッドを並べ替える」を参照してください。SortMethodsWith を使用すると、ユーザーはテスト クラス内のメソッドの実行順序を選択できます。