我想測試一個函數,它是struts應用程序業務邏輯層的一部分。我面臨的問題是因爲代碼依賴於組織廣泛使用的jar中的外部函數。如何測試使用外部軟件包與數據庫交互的方法
public CustomObject getCustomObject(String id){
CustomObject customObject = new CustomObject();
QueryObject sql = createSqlStatement(id); // EXTERNAL jar
Result result = execute(sql); // EXTERNAL jar
ArrayList list = result.getResulList(); // EXTERNAL jar
// Logic to use the list object to fill the customObject
// I can see an error here, that could have been
// caught in unit test
return customObject ;
}
現在問題是測試填充對象的邏輯。
我寫的Junit4測試:
@Test
public void testCustomObject() {
CustomObject customObjectwActual = new CustomObject();
CustomObject customObjectExpected = new CustomObject();
// set properties of customObjectExpected here
customObjectwActual = getCustomObject(id); // Exception here
assertEquals(customObjectExpected , customObjectwActual);
}
拋出異常,因爲按照開發商的解釋「外部罐子類在Struts應用程序啓動時加載」。我是Java和struts的新手。我的方法錯了嗎?有沒有辦法在setUpBeforeClass()
中「加載」這些外部jar類?
請讓我知道,如果有什麼不清楚。編輯2: 對不起,我的問題還不清楚。我的classpath中有這些外部罐子。它編譯得很好,它實際上加載了外部jar的類。 SQL查詢存儲在一個xml文件中。這些外部的jar文件也有自己的帶有SQL語句的xml文件。它無法加載這兩個XML文件中的一個。
此外,即使它們正確加載,我實際上不想調用數據庫。有什麼方法來嘲笑這些電話嗎?
你需要在你的classlibrary中包含這些jar文件,並且需要導入你的代碼所需的類 – aymankoo 2013-05-05 04:27:36
你是什麼意思?但是,我卻無法加載它們自己的依賴關係? – 2013-05-05 04:36:42