2013-05-05 62 views
0

我想測試一個函數,它是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文件中的一個。
此外,即使它們正確加載,我實際上不想調用數據庫。有什麼方法來嘲笑這些電話嗎?

+0

你需要在你的classlibrary中包含這些jar文件,並且需要導入你的代碼所需的類 – aymankoo 2013-05-05 04:27:36

+0

你是什麼意思?但是,我卻無法加載它們自己的依賴關係? – 2013-05-05 04:36:42

回答

1

有沒有辦法在 setUpBeforeClass()中加載這些外部jar類?

你只需要在你的課程路徑中包含這些罐子。當你使用它們時,類將在運行時自動加載它們

我是Java和struts的新手。我的方法錯了嗎?

沒有什麼特定於Struts的。它的普通核心Java,你在項目中使用的外部類必須包含在你的類路徑中

有沒有某種方法來模擬這些調用?

那麼,如果你嘲笑這些調用,有什麼用寫DB測試用例這確實考驗DB互動

的我也建議使用像Eclipse作爲其發展前景十分有益的IDE一樣提供編譯問題的前期,格式化etc

+0

我已經有了類路徑中的jar。該項目編譯好。這些類實際上已加載,但無法加載它們的內部依賴關係。 – Upendra 2013-05-05 04:31:17

+0

內部依賴? – 2013-05-05 04:32:03

+0

感謝M Sach幫助我,並且很抱歉讓我不清楚。以下是更多詳細信息: sql查詢是XML文件中主項目的一部分。外部jar類會加載,但看起來像無法讀取項目中的xml文件。請讓我知道是否需要更多信息 – Upendra 2013-05-05 04:36:36