簡體   English   中英

通用DAO類的通用測試類?

[英]Generic test class for a generic DAO class?

我正在嘗試測試一些從通用類繼承的DAO類,並且想知道是否存在編寫通用測試類的方法來測試我的通用DAO的功能,並創建從該類繼承的其他測試類

我的通用DAO類別:

 public abstract class GenericDAO<T> {
    private final Class<T> entityClass;

    public GenericDAO(Class<T> entityClass) {
        this.entityClass = entityClass;
    }
    //bunch of methods
    //...
}

從我的泛型繼承的示例DAO

public class OptionsDAO extends GenericDAO<Options> {

    public OptionsDAO() {
        super(Options.class);
    }
}

我目前在測試中

public class OptionsDAOTest {
    //...
    @Test
    public void testSomeMethod() {
        OptionsDAO odao = new OptionsDAO(); //this is what blocked me from achieving what i'm trying to do (look @next sction)
    odao.callSomeMethod();
    //Asserts and what not...
    }
    //...
}

這就是我希望做的

public class GenericDAOTest<T> {

    private final Class<T> entityClass;

    public GenericDAOTest(Class<T> entityClass) {
        this.entityClass = entityClass;
    }
    @Test
    public void testSomeMethod() {
        GenericDAO gdao = ???//how can i get an instance based on the T passed to the class?
    odao.callSomeMethod();
    //Asserts and what not...
    }
    //...
}

public class OptionsDAOTest extends GnericDAOTest<Options> {
    public OptionsDAOTest() {
        super(OptionsDAO.class);
    }    
    //how can i call inhrited methods here to test them on an Options java bean
    //and do the same with oter DAO classes i have?
}

GenericDAO gdao = ??? //如何基於傳遞給該類的T獲取實例?

如果泛型類提供了無參數構造函數,則可以只調用entityClass.newInstance() 請注意, entityClass的類型為Class<T> ,因此類型為T

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM