2015-04-20 57 views
0

在爲應用程序編寫單元測試時,通常我會創建原始main/resources中某些配置的副本,並將其修改以用於測試目的,但我保留相同的名稱。然而,Junit有時會使用src中的那個,有時也會使用test/resources中的那個。Junit使用正確的資源

我們如何管理它在不重命名文件的情況下拾取哪一個?

,比如我有一些「config.json」,這是在測試和主要的資源,如何選擇的JUnit運行測試時選擇哪一個?

+0

我擔心這有點太廣泛而無法回答。一些建議:'src/main/resources'中的資源將在生成的JAR中結束。這也意味着他們不能改變。因此,這不是可更改配置文件的正確位置。它應該只包含程序/庫的_static_資源(例如:圖像)。這同樣適用於'src/test/resources'。在這裏你只應該放置你的測試資源文件。配置文件應該在別處。我們通常通過系統屬性加載它們。 – Seelenvirtuose

+0

那麼log4j.config或spring context xmls呢?你拿着他們的其他軟件? – vach

+0

如果有2個文件具有相同的名稱,是否有強制junit在測試分支中選擇一個的任何選項?像這樣簡單的功能可以解決這麼多麻煩... – vach

回答

1

好吧,只是一個快速的答案:

您不能從src/main/resources排除資源。它們總是在你的課程路徑中,因此它們是你程序/庫的一部分。

但是你不應該這樣做。

例如,Log4j2允許在類路徑中具有不同名稱的配置文件(運行測試時)。只需將它命名爲log4j2-test.xml,它將在非測試文件之前加載。

當使用@ContextConfiguration註釋測試類時,Spring的行爲相同。