私の目標は、各テスト メソッドの後に javax.persistence.EntityManager を clear() することです。
テスト クラスの例を次に示します。
public class Example
{
@Test(dataProvider = "sampleDataProvider")
public void testA(String parameter)
{
System.out.println(parameter);
}
@Test(dataProvider = "sampleDataProvider")
public void testB(String parameter)
{
System.out.println(parameter);
}
}
entityManager は、DB にテスト データを照会することによって、dataProvider "sampleDataProvider" で使用されます。テスト データは、次の形式でコンパイルされますnew Object[2][1]
。データのクエリとコンパイルはすべて、テスト メソッド (@DataProvider で注釈を付けたもの) が実際に実行される前に行われ、文字列だけでなくエンティティを実際にクエリしていることに注意してください。
上記のテスト クラスは次のように実行されます。
testA("some queried entity 1")
testA("some queried entity 2")
testB("some queried entity 1")
testB("some queried entity 2")
私の最初の解決策は、@AfterTest
注釈を使用して entityManager をクリアすることでした。ただし"some queried entity 2"
、 の 2 回目の実行 (または 2 回目のテスト インスタンス) の前に entityManager から切り離さtestA
れtestB
、 のメンバーへの読み取り/書き込み操作で問題が発生します"some queried entity 2"
。
私の目標は、テスト メソッドの後に entityManager をクリアすることであり、必ずしもテスト メソッドのすべてのインスタンスの後であるとは限りません。
TestNG は、次に実行されるテストを知ることを可能にしますか? そうすれば、次のテストが新しいテストである場合、entityManager を簡単にクリアできます。
他の推奨事項はありますか?