參數化測試:

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

待補充案例 ...

results matching ""

    No results matching ""