是否有可能以多線程的方式運行nunit測試?有沒有可以提供這個的跑步者?以多線程的方式運行nUnit測試
的「單元測試」的概念有人跳之前,讓我解釋一下:這是沒有單元測試我們使用NUnit的功能/集成測試以及和一些測試是慢得令人難以置信,得到了很多等待州。因此多線程可以大量幫助他們。
我知道作爲最後的手段,我可以在測試中推出自己的多線程,但是這會引入不必要的開銷。
是否有可能以多線程的方式運行nunit測試?有沒有可以提供這個的跑步者?以多線程的方式運行nUnit測試
的「單元測試」的概念有人跳之前,讓我解釋一下:這是沒有單元測試我們使用NUnit的功能/集成測試以及和一些測試是慢得令人難以置信,得到了很多等待州。因此多線程可以大量幫助他們。
我知道作爲最後的手段,我可以在測試中推出自己的多線程,但是這會引入不必要的開銷。
您可能想看看Overshore多線程測試框架,它具有一個ThreadManager類,您可以稍微擴展以添加「失敗」測試的概念。
如果你只使用斷言,可以算例外。
好運
PS:爲什麼不跑幾楠/ NUnit的亞軍出來的過程?
是的我已經看到了,但是這個代碼和在你自己的線程池中運行線程沒有什麼不同(或者我錯過了什麼)。這並不是什麼聰明的東西,比如[ThreadTest] - 現在會很酷:) 實際上運行nUnit的多個實例並不是一個壞主意,只是有點麻煩,需要相當多的手工勞動。 –
嘗試Pnunit
我工作的MultithreadedTC Java library的.NET端口上。我的端口叫做Ticking Test,源代碼在GitHub上發佈。
TickingTest最初並不打算做你想做的事,但它可能工作。它可以讓你用幾個標有TestThread屬性的方法編寫一個測試類。每個線程可以等待一定的滴答計數到達,或斷言它認爲當前的滴答計數應該是什麼。當所有當前線程被阻塞時,協調器線程提前計數並喚醒正在等待下一個滴答計數的任何線程。如果您有興趣,請查看MultithreadedTC overview舉例。 MultithreadedTC是由編寫FindBugs的一些人編寫的。
我已經在一個小項目上成功地使用了我的端口。主要缺失的功能是我無法在測試過程中跟蹤新創建的線程。
這裏是對PNUint http://www.codicesoftware.com/opdownloads2/oppnunit.aspx的引用。我們用它作爲環境的一部分,爲了測試一個Web應用程序具有豐富的Ajax功能
但是ofcourse我們必須有這個TeamCity的支持太;-)
據稱NUnit3將支持多線程。
我不敢相信MSTest沒有列出。 Visual Studio已經支持多個年齡的併發測試。
MSTest單元測試工具?我想你可能會提到性能負載測試工具,這些工具只能在Visual Studio Ultimate版本中使用。 NUnit已經測試了一段時間的併發測試,但作者正在尋找集成測試,並且需要的不僅僅是一個簡單的測試運行器。 –
我們建立了一個遞歸的MSBuild腳本來同時運行單元測試的dll,這看起來是這樣的:
<Target Name="UnitTestDll">
<Message Text="Testing $(NUnitFile)" />
<ItemGroup>
<ThisDll Include="$(NUnitFile)"/>
</ItemGroup>
<NUnit ToolPath="$(NUnitFolder)" Assemblies="@(ThisDll)" OutputXmlFile="$(TestResultsDir)\%(ThisDll.FileName)-test-results.xml" ExcludeCategory="Integration,IntegrationTest,IntegrationsTest,IntegrationTests,IntegrationsTests,Integration Test,Integration Tests,Integrations Tests,Approval Tests" ContinueOnError="true" />
</Target>
<Target Name="UnitTest" DependsOnTargets="Clean;CompileAndPackage">
<Message Text="Run all tests in Solution $(SolutionFileName)" />
<CreateItem Include="$(SolutionFolder)**\bin\$(configuration)\**\*.Tests.dll" Exclude="$(SolutionFolder)\NuGet**;$(SolutionFolder)**\obj\**\*.Tests.dll;$(SolutionFolder)**\pnunit.tests.dll">
<Output TaskParameter="Include" ItemName="NUnitFiles" />
</CreateItem>
<ItemGroup>
<TempProjects Include="$(MSBuildProjectFile)">
<Properties>NUnitFile=%(NUnitFiles.Identity)</Properties>
</TempProjects>
</ItemGroup>
<RemoveDir Directories="$(TestResultsDir)" Condition = "Exists('$(TestResultsDir)')"/>
<MakeDir Directories="$(TestResultsDir)"/>
<MSBuild Projects="@(TempProjects)" BuildInParallel="true" Targets="UnitTestDll" />
</Target>
你顯然還需要你的編譯目標(或在我們的例子CompileAndPackage)實際建設先測試dll。
這也打亂了你的NUnit的結果對大多數報告工具,但在已經打的問題,我們寫了一個工具,以幫助與:https://github.com/15below/NUnitMerger
+1解釋爲有經驗的stackoverflower場景:) –
我知道什麼是當你問這樣的事情時會發生:D –