1

Java jUnit テストを scala に変換しています。scala はチェック例外を使用しないため、この Java コードは次のようになります。

@Test 
public void testException throws Exception = {
    throw new Exception
}

次のように scala で書き直すことができます。

@Test def testException = {
    throw new Exception
}

Java で記述されたテストは、新しい例外をスローする行で失敗しますが、scala で記述されたテストは、例外もスローしますが合格します。

scala テストを以下のように書き直すことができるので、例外がスローされた場合は、junits の fail メソッドを呼び出して明示的に強制的にテストを失敗させます。

@Test def testException = {
    try { 

    } catch {
           case e: Exception => {
                 fail("exception thrown "+e.getMessage());
            }
    }
}

このようなテストを書くべきですか? つまり、例外をスローする Java テストの場合、scala バージョンのテストを書き直して、明示的にキャッチし、Java バージョンのテストの動作を模倣できないようにする必要がありますか?

4

1 に答える 1

4

いいえ、絶対にすべきではありません。それが行う唯一のことは、テストをより冗長にし、スタック トレースとアサーション メッセージを悪化させることです。

Java で記述されたテストは、新しい例外をスローする行で失敗しますが、scala で記述されたテストは、例外もスローしますが合格します。

いいえ、例外をスローする JUnit テストは失敗します。それがどの言語で書かれているかは問題ではありません。

于 2012-12-10T11:55:24.347 に答える