2011-02-24 56 views
5

我在測試課上有許多彈簧測試方法。我只想運行選擇性測試。所以我想在同一個類中創建一個測試套件。如何編寫多個測試的春季測試套件並運行選擇性測試?

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"/testApplicationContext.xml"}) 
@TransactionConfiguration(defaultRollback=true) 
public class TestersChoice { 


@Test 
@Transactional 
public void testAddAccount(){   
    ///do something .... 
} 


@Test 
@Transactional 
public void testDeleteAccount(){   
    ///do something .... 
} 

@Test 
@Transactional 
public void testReadAccount(){   
    ///do something .... 
} 

}

如果我運行這個類TestersChoice所有的測試運行!我只想運行testReadAccount而不是其他的。我想創建套件來運行選擇性測試。 (我想避免刪除@Test上面的測試方法來實現這一點) 就像在jUnit測試用例中一樣。這就是我能夠TestersChoice類延伸到測試用例和插入這種方法做:

public static TestSuite suite(){ 
     TestSuite suite = new TestSuite(); 
     suite.addTest(new TestersChoice("testDeleteAccount")); 
     return suite; 
} 

但正如我現在不延長的TestCase所以我無法添加TestersChoice例如適合!

如何運行選擇性測試?

+1

你如何運行測試?蝕? Maven的?還有別的嗎? – 2011-02-25 08:54:24

+0

我在eclipse上運行它們,但是一旦所有測試套裝完成,我必須使用surefire插件最終部署到maven上。 – supernova 2011-02-25 15:18:39

+0

做一些研究,我發現如果你在測試文件中添加多個測試類來適應,但是還找不到任何東西,那麼測試套件在春季測試中是可能的! – supernova 2011-02-25 15:20:15

回答

1

如果你想要對你的測試進行分組,那麼問題不在於彈簧測試,而是在JUnit中不能進行分組測試。考慮切換到TestNG(也支持Spring OOTB)。

TestNG構建於JUnit上,但功能更強大:請參閱comparison

Grouping很簡單。

問候,
斯泰恩

1

你可以使用Spring的IfProfileValue(如果你總是使用@RunWith(SpringJUnit4ClassRunner.class)),然後測試,如果指定使用-D<propertyname>特定系統屬性纔會運行。

0

在您不想執行的每種方法上使用@Ignore。以你的例子:

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"/testApplicationContext.xml"}) @TransactionConfiguration(defaultRollback=true) public class TestersChoice { 


@Test @Transactional @Ignore public void testAddAccount(){   ///do something .... } 


@Test @Transactional @Ignore public void testDeleteAccount(){   ///do something .... } 

@Test @Transactional public void testReadAccount(){   ///do something .... } 

所有方法都標記爲@Ignore不會被執行