參數化測試:
Run with Parameterized.class : Junit
使用案例參考:
@RunWith(Parameterized.class)
public class SimpleQueryExecutorTest_Basic {
@Parameters(name = "{index}:{0}")
public static Collection<String> tableNames() {
return Arrays.asList("tableA", "tableB");
}
private final String tableName;
public SimpleQueryExecutorTest_Basic(final String tableName) {
this.tableName = tableName;
}
// ... Test Cases
Run with UdeTestFixture.class
@TestData
- 可以跟UDETest併用。
- Parameterized 針對整個 TestClass 定義參數。UdeTestFixture 針對單一 TestMethod 定義參數。
- 測試方法加上@TestData即可,不用再加@Test。直接輸入的資料採用字串格式。
- 如果把輸入及預期結果,包裝為一個 TestData 類別,也可以指定實作Supplier
的一個Enum做為測試資料。
@RunWith(UdeTestFixture.class)
public class LogicalFileTest_GetName {
@TestData("DEFAULT:1478012300001::subPath1")
@TestData("DEFAULT:1478012300002::subPath2")
public LogicalFile testFromPath(final String path) {
// test ...
}
@TestData({ "a.txt", "" })
@TestData({ "b/a.txt", "b" })
public void tsetGetParent(final String subPath, final String parentPath) {
// test ...
}
@TestData(enumType = PersonCountryTypeTestData.OM.class)
public void lookup(final PersonCountryTypeTestData testData) {
final XLDFPersonDomainObject<?, ?> personDO = testData.generatePersonDO();
final PersonCountryType countryType = PersonCountryType.lookup(personDO);
assertEquals(testData.getExpectResult(), countryType);
}
}
@TestCases
- 參數為單一 FunctionalInterface
- 指定 class 中,符合參數FunctionalInterface 輸入、回傳參數型別的 static method,將做為傳入 proxy 物件的實際呼叫內容。
@TestCases(QueryColumnTests.class)
@TestCases(QueryForListTests.class)
@TestCases(QueryForObjectTests.class)
public void doTest(final QuietConsumer<DBFacade> func) {
DBFacade.run(this.dbFacadeFactory, func);
}
- QueryColumnTests
public static void queryColumnNormal(final DBFacade dbFacade) {
// ! [TEST_INVOKE_ASSERT]
final Object count1 = dbFacade.queryColumn(SQL_QUERY_COUNT);
assertTrue(count1 instanceof Number);
assertEquals("QueryColumn data size:", 15, ((Number) count1).intValue());
// ! [TEST_INVOKE_ASSERT]
final Object count2 = dbFacade.queryColumn(SQL_QUERY_COUNT + " where apy_date=?", QueryParams.fromString("1020430"));
assertEquals("QueryColumn data size:", 2, ((Number) count2).intValue());
}
@TestDataByStaticField
待補充案例 ...