0
Room永続ライブラリでいくつかのテストを行っていますが、予期しない結果が@BeforeClassから発生しています。ドキュメントでは、すべてのテストの前に一度だけ関数を呼び出すことになり、プロセスの初期化に使用されます。テスト関数createcurrenciesは機能しますが、ダミーのcreatecurrencypairsは機能しません。私がclearcurrenciesを(セットアップから)削除した場合にのみ、それは期待通りに機能します。私のテストからは、すべてのテストの前にBeforeClassが実行されているようです。何か案は?@BeforeClassが期待どおりに動作しない
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
private static myDb dbh = null;
private static Context context = null;
private static Integer n = 100;
@BeforeClass
public static void setUp() throws Exception {
context = InstrumentationRegistry.getTargetContext();
dbh = myDb.getDatabase(context);
dbh.daoCurrency().clearCurrencies();
}
@Test
public void createCurrencies() {
Integer n=100;
for (Integer i=1; i<=n; i++)
{
Currency c = new Currency();
c.setCode("CUR"+i);
dbh.daoCurrency().addCurrencies(c);
}
List<Currency> currencyList = dbh.daoCurrency().getCurrencies();
assertEquals((Integer) n, (Integer) currencyList.size());
}
@Test
public void createCurrencyPairs() {
List<Currency> currencyList = dbh.daoCurrency().getCurrencies();
assertEquals((Integer) n, (Integer) currencyList.size());
}
@AfterClass
public static void tearDown() throws Exception {
dbh.close();
}
}
あなたの2つのテストはお互いに依存しているように見えます.1つはデータをデータベースに挿入し、もう1つは以前のテストのものを見つけようとします。それは悪い習慣です。ユニットテストは、別のユニットテストで何が起きたかに依存してはいけません。テストメソッドが特定の順序で実行されるという保証はありません。 – Jesper
私の最初のセットアップ。はい、論理的に聞こえます。私はそれを再加工します。ありがとう – jcuypers
解答を投稿して[ツアー]を受け入れるか、これを行うためのエネルギーがない場合は質問を削除するだけで、タイトルに解答を追加しないでください。 –