我的每個Junit測試用例都有多個場景,每個場景之間都需要運行ETL過程(需要20分鐘)才能進行驗證。假設我有與格式4個JUnit測試類:這可能使用JUnit嗎?
- 第一次測試 - 一個場景
- 第二個測試 - 兩個場景
- 第三個測試 - 三個場景
- 第四個測試 - 四種情形
是否有可能在所有測試方法上單獨運行第一個場景,將會話保持在某處然後返回到該類運行第二個場景(如果可用)等。我只想知道這是否可以使用Junit。我在幾個地方搜索,我沒有找到任何運氣。
我的每個Junit測試用例都有多個場景,每個場景之間都需要運行ETL過程(需要20分鐘)才能進行驗證。假設我有與格式4個JUnit測試類:這可能使用JUnit嗎?
是否有可能在所有測試方法上單獨運行第一個場景,將會話保持在某處然後返回到該類運行第二個場景(如果可用)等。我只想知道這是否可以使用Junit。我在幾個地方搜索,我沒有找到任何運氣。
號的JUnit FAQ說,「測試方法調用的順序是不能保證......」又見How to run test methods in spec order in JUnit4?
另一個阻礙你的計劃,我的理解是,JUnit的實例化的新實例的每個方法的測試類。 (Here is the explanation why)您的每個場景都將在測試類的不同實例中運行。
你的問題不是很清楚;也許如果你提供了更多關於你想要做什麼的細節,你會得到一些建議。
如果您使用的是數據庫,您是否可以擁有四個數據庫?
在JUnit中沒有任何關於保存/恢復會話的具體內容,但是,您可以查看categories以僅在CI服務器上運行特定測試。
如果在運行時,你可以告訴某個場景是否適用/可用,您可以使用條件(重新)運行多次,有場景:
@Before
public void seeIfScenarioIsApplicable() {
org.junit.Assume.assumeTrue(isScenarioIsApplicable(...));
}
@Test
first(){ // do magic }
@Test
second(){ // do magic }
@Test
third(){ // do magic }
@Test
fourth(){ // do magic }
萬一「isScenarioIsApplicable」返回false,測試方法被跳過。
什麼是「ETL過程」? – Paul 2012-01-06 05:35:56
我不清楚你要求什麼,你想要執行所有四種場景的第一次測試,然後是三種場景的第二次測試,兩次是第三次測試,一次是最後一次測試? – ninesided 2012-01-06 05:35:58
@Paul - ETL代表「Extract,Transform,Load」,它是用於在系統之間遷移數據或接口的過程。 – ninesided 2012-01-06 05:37:25