正如在不同位置提到的,maven(版本3.0.1)不支持項目之外的CLASSPATH。因此,當一個jUnitTest想要啓動一個外部應用程序(如OpenOffice)時,啓動命令'$> mvn test'時失敗。 在eclipse中,我可以手動添加CLASSPATH'運行配置',然後它工作正常。添加驗證我在Eclipse中的代碼?
我的問題:我可以在我的jUnitTest源代碼中添加驗證我在Eclipse中的代碼嗎?因爲這隻會跳過命令行上的測試。而其他測試仍然在命令行上繼續。
正如在不同位置提到的,maven(版本3.0.1)不支持項目之外的CLASSPATH。因此,當一個jUnitTest想要啓動一個外部應用程序(如OpenOffice)時,啓動命令'$> mvn test'時失敗。 在eclipse中,我可以手動添加CLASSPATH'運行配置',然後它工作正常。添加驗證我在Eclipse中的代碼?
我的問題:我可以在我的jUnitTest源代碼中添加驗證我在Eclipse中的代碼嗎?因爲這隻會跳過命令行上的測試。而其他測試仍然在命令行上繼續。
編寫驗證,如果你想使用的類加載(需要是由於怎樣的類加載器的工作一個單獨的類的類。它會像
public class OODetector {
public static boolean isOOOnClassPath() {
try {
OODetector.class.getClassLoader().loadClass("org.... class name here ...");
return true;
} catch (Throwable t) {
return false;
}
}
}
現在在任何開始測試需要在類路徑中的類,只是把Assume.assumeThat(OODetector.isOOOnClassPath(), is(true));
和測試將在這樣的情況下被跳過,如
public class OOTests {
@Test
public void smokes() throws Exception {
Assume.assumeThat(OODetector.isOOOnClassPath(), is(true));
// rest of test
}
}
或更好,但把它放在@BeforeClass,如
public class OOTests {
@BeforeClass
public static void smokes() throws Exception {
Assume.assumeThat(OODetector.isOOOnClassPath(), is(true));
}
// tests
}
如果OO不在類路徑中,不會影響失敗的計數,但會使總測試計數有效,並且當您找出將運行時依賴關係獲取到的正確方法時,將跳過類中的所有測試您的Maven推出的測試類路徑然後測試將神奇地開始運行
只需添加一個運行時或VM標誌,您可以在代碼中測試其值。
您可以使用Maven profiles來激活不同的屬性,運行不同的命令,根據需要修改您的類路徑,甚至過濾掉一些測試。例如,您可以創建僅在Eclipse中使用的特定配置文件。
觀察 - 調用OpenOffice的單元測試*不是單元測試!這聽起來像是一個集成測試,至少。 –
我使用OpenOffice的java API,我只能測試一個單元格(即)它是否正確設置,當我啓動OO時,我的程序。因此對我來說,它是單元測試。但是如果你有單元測試的建議而不啓動面向對象,你可以通知我。 – kdg1955
有太多的話要把它壓縮到一個評論中,但我認爲你應該將Java API的用法隱藏在一個façade後面。假設這個外觀是作爲一個接口呈現的,你可以在你的單元測試中模擬這個對象,並確認你正在調用API而不會觸發OO。 –