@BeforeClass没有按预期工作

时间:2017-11-01 12:42:48

标签: java android junit4

使用Room persistance库进行一些测试,但从@BeforeClass获得一些意外结果。 doc说明这将在所有测试之前仅调用一次该函数,并用于初始化该过程。事实证明,测试函数createcurrencies工作,但虚拟创建货币对不起作用。只有当我删除clearcurrencies(从设置)它按预期工作。从我的测试看来,在每次测试之前执行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();
    }
}

1 个答案:

答案 0 :(得分:0)

根据我收到的反馈,我重新编写了它,现在它按预期工作了。

DatumRange: // maak tijdelijke tabellen aan met de datum range van de begin en eind datum per patiënt
LOAD DatumNum
Resident Kalender;

BeginEindVerblijf:
LOAD VerblijfStartNum, VerblijfEindNum
Resident Patiënt;

// sla de tabellen op in CSV bestanden om met behulp van een Python script om te zetten naar bezetting

STORE DatumRange INTO [C:\Users\masc\Desktop\Data-analyse voor U-Center in QLikView\Zelfgemaakte dummy dataset U-Center\Bezetting berekenen in Python\NumDateRange.csv] (txt);
STORE BeginEindVerblijf INTO [C:\Users\masc\Desktop\Data-analyse voor U-Center in QLikView\Zelfgemaakte dummy dataset U-Center\Bezetting berekenen in Python\VerblijfStart_VerblijfEind.csv] (txt);

DROP Table DatumRange;
DROP Table BeginEindVerblijf;

EXECUTE python3 BerekenBezetting.py // voer Python script uit om de bezetting te bepalen

Directory;
LOAD DatumNum, Date(DatumNum, 'YYYYMMDD') as JaarMaandDag, AantalPatiënten
FROM [Bezetting berekenen in Python\Bezetting.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq);