我有測試運行很慢慢,說一個測試,它導出一個大型數據庫來測試內存泄漏的導出代碼。我想在我平時的測試套件,有這些測試,但除非這些條件之一滿足,他們應該被忽略:如何區分「運行所有測試」和「只運行此測試」?
- 測試是CI服務器上運行
- 用戶已經選擇了這個測試中IDE並運行它
#1的解決方案很簡單:使用屬性並跳過測試(如果未設置)。
但是我怎麼能實現#2?
[編輯]這是Java特定的。我在Eclipse中使用JUnit 4。
我有測試運行很慢慢,說一個測試,它導出一個大型數據庫來測試內存泄漏的導出代碼。我想在我平時的測試套件,有這些測試,但除非這些條件之一滿足,他們應該被忽略:如何區分「運行所有測試」和「只運行此測試」?
#1的解決方案很簡單:使用屬性並跳過測試(如果未設置)。
但是我怎麼能實現#2?
[編輯]這是Java特定的。我在Eclipse中使用JUnit 4。
我有測試運行速度非常慢,說一個測試,導出一個大型數據庫來測試內存泄漏的導出代碼。
雖然有用,但這些不是單元測試,如單元測試標記所示。
測試是不是一個單元測試,如果:
做這些事情的測試並不差,當然值得一寫。他們甚至可以使用單元測試框架編寫。但是,能夠將它們與真正的單元測試分開是非常重要的,以便您可以保存一組可以在您進行更改時快速運行的測試,特別是在您希望從失敗測試轉爲通過測試的TDD循環中儘快。
如果您使用的是Makefile
,您可以使用check
目標進行真正的單元測試,並使用livecheck
目標執行這些慢速系統測試。
如何分別運行每個測試將取決於您的框架。
+1獲得良好的背景信息和使用'make'的解決方案 – 2010-10-08 13:29:21
我們使用Maven,與Eclipse很好地集成。我們使用JUnit爲
Test
只是後綴,並且在每一個完整的編譯運行IntegrationTest
。這些只在通過命令行開關(-PintegrationTests)激活特殊的Maven配置文件時運行。的一套完整的集成測試是CI服務器上或由開發商誰明確規定了上述型材(mvn test -PintegrationTests
)每天跑三次。當然,程序員可以隨時在IDE中運行單個集成測試。
這是有關部分從pom.xml
:
<profiles>
<profile>
<id>integrationTests</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/Test*.java</include>
<include>**/*Test.java</include>
<include>**/IntegrationTest*.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
特定IDE,或任何? – Ash 2010-10-08 12:53:30
我使用Java,Eclipse和JUnit 4,但我會接受任何我可以採用的答案。 – 2010-10-08 13:29:57
我在這裏推理一下......因爲Eclipse允許你在運行配置中設置環境變量,並且如果你願意爲測試設置一個運行配置,你可以在測試中檢查環境變量。正在做這樣的事情,即使對於你的設置遠程有用嗎? – Ash 2010-10-08 13:41:40