2015-11-23 48 views
5

有一種方法可以配置Teamcity忽略一些測試嗎?我需要僅在本地運行這些測試,當它們在Teamcity中運行時,必須被忽略。如何配置Teamcity忽略一些測試

我正在使用nunit。

這可能是一個指示,屬性等

+0

http://stackoverflow.com/questions/15618225/teamcity-re-running-a-specific-build-step – MethodMan

回答

10

您可以通過添加測試類別,您的測試做到這一點。

[Category("LocalOnly")] 
[Test] 
public void MyLocalTest() 
{ 
    // Code omitted for brevity 
} 

然後,您可以將該類別添加到TeamCity構建步驟中的NUnit runner的'NUnit categories exclude:'字段。

NUnit categories exclude: LocalOnly 

The TeamCity NUnit ignore category field

2

的TeamCity 9.1 supports NUnit的3和它打開many other possibilities選擇測試用於執行或它們濾掉。我會建議使用--where=EXPRESSION,它允許使用Test Selection Language。現在,您甚至可以使用正則表達式來指定要運行或排除的測試。

例子

你想排除只有一個測試?

--where="method != 'TestName'" 

你想排除只有一個測試嗎?不記得確切的名稱,但與「BuggyMethod」的東西(~意味着正則表達式參與):

--where="class == 'My.Namespace.ClassName'" 

忘了完整的命名空間:在一個類中定義

--where="method !~ 'BuggyMethod'" 

運行所有測試?這不是問題 - 使用正則表達式:

--where="class =~ 'ClassName'" 

您也可以組合這些表達式以達到所需的效果。運行該類的所有測試,但exlude包含「BuggyMethod」的所有方法:

--where="class =~ 'ClassName' and method !~ 'BuggyMethod'" 

這種方法更加靈活,並避免你的代碼的任何修改。除非您的測試使用類別進行分類,否則我不會再看到使用類別的要點。