2014-01-18 30 views
0

要求:我需要使用Ant構建文件將用戶詳細信息傳遞給我的JUnit測試。使用Ant寫入要在JAVA中使用的屬性文件

限制:這是一個大型的項目,有很多構建文件,我不允許改變太多,因此,將屬性作爲JUnit arg傳遞是不可選的。

備選:傳遞參數作爲Ant參數,將它們寫入屬性文件並在我的測試中讀取它。

由於Java屬性文件在運行時更新,我將無法訪問如下靜態方式的資源對象:

Class A { 
    private static Resources ab = new Resources(A.class); 

    public static getResourceString(String id) { 
    return ab.getResourceString(id); 
    } 
} 

在我的測試中,使用訪問A.getResourceString("user1");

我想,在使資源ab不是靜態之後,我需要使用類似new A().getResourceString(id);之類的內容。

但是,這似乎不是一個完美的方式(假設這將工作)。上述論點是否有缺陷?還有其他的選擇嗎?

注意:將參數作爲Java或Junit arg發送不是選項。

回答

1

推回 - 你的單元測試不應該採取任何輸入。把它們想象成科學實驗,用一個變量(代碼) - 其他的都應該是靜態的。在您描述的方案中,由於錯誤或意外的輸入,測試可能會失敗。單元測試失敗應該是代碼中的錯誤。

我並不是說這些測試沒有價值 - 但它們不是單元測試。

+0

我需要傳遞他們將運行的用戶。我無法在屬性文件中將其編碼,因爲它們將在不同的機器上同時運行,並且使用相同的用戶會導致一些問題。 – user3210657

+0

我明白了,我的觀點是你應該重做你的測試,這樣他們不會因爲諸如在同一臺機器上發生多次測試運行等問題而失敗。 – thekbb