我想爲一個類創建一個Testclass,它從數據庫中讀取數據並轉換它們。測試類應該測試這個轉換函數。但是我可以測試這個函數,我需要一個ResultSet對象。自己創建一個ResultSet對象
如何在沒有連接到數據庫的情況下在ResultSet對象中填充一些數據?
我想爲一個類創建一個Testclass,它從數據庫中讀取數據並轉換它們。測試類應該測試這個轉換函數。但是我可以測試這個函數,我需要一個ResultSet對象。自己創建一個ResultSet對象
如何在沒有連接到數據庫的情況下在ResultSet對象中填充一些數據?
從數據庫讀取關注點集成測試而不是單元測試。因此,您可以並應該使用原始的ResultSet
,因爲集成測試會考慮真實的後端(如您的數據庫)。
如果您嘗試單元測試您的邏輯,存根或模擬您的特定DAO稱爲部分,以便返回要測試的示例數據。但在這種情況下根本不要調用數據庫(不要處理ResultSet
)。
類似於下面的代碼: 您需要一個用於您的Db訪問的接口。 你在代碼和測試代碼中使用此接口: myDbConnectionMock是具有像DB連接, 相同的界面模仿對象,但它是您創建一個對象,並在那裏你卡恩填寫你想要什麼:
我不會使用Mockito或更糟的EasyMock。
代碼我在文本編輯鍵入(希望可編譯,也許不是):
public void testDBConnection() {
IDataBaseConnection conn = new MyDbConnectionMock();
conn.connect();
Set<Result> result = conn.readData();
assertTrue(result.size > 0);
}
其中
// Interface for DB connection, adapt to real DB connection
public interface IDataBaseConnection {
boolean connect();
Set<Result> readData();
}
和
// DB connection Mock
class MyDbConnectionMock implements IDbConnection {
public void connect() {
return true;
}
public Set<ResultSet> readData() {
Set<Result> resultSet = new HashSet<Result>();
Result res1 = new Result(20);
resultSet.add(res1);
Result res1 = new Result(30);
resultSet.add(res2);
return resultSet;
}
}
Willkommen。嘗試使用mockito http://code.google.com/p/mockito/或http://www.easymock.org/。沃格爾在這裏做了一個很好的教程:http://www.vogella.com/articles/EasyMock/article.html – Rekin