據我所知,xUnit沒有全局初始化/拆卸擴展點。但是,創建一個很容易。只需創建一個實現IDisposable
的基本測試類,並在構造函數中執行初始化,並在IDisposable.Dispose
方法中執行初始化。這應該是這樣的:
public abstract class TestsBase : IDisposable
{
protected TestsBase()
{
// Do "global" initialization here; Called before every test method.
}
public void Dispose()
{
// Do "global" teardown here; Called after every test method.
}
}
public class DummyTests : TestsBase
{
// Add test methods
}
然而,基類的安裝和拆卸的代碼將在每次調用執行。這可能不是你想要的,因爲它不是很有效。更優化的版本將使用IClassFixture<T>
接口來確保僅調用一次全局初始化/拆卸功能。對於這個版本,你不會從你的測試類擴展基類,但其實現的IClassFixture<T>
界面,T
指的是您的夾具類:
using Xunit;
public class TestsFixture : IDisposable
{
public TestsFixture()
{
// Do "global" initialization here; Only called once.
}
public void Dispose()
{
// Do "global" teardown here; Only called once.
}
}
public class DummyTests : IClassFixture<TestsFixture>
{
public void SetFixture(TestsFixture data)
{
}
}
這將導致TestsFixture
構造函數只被運行一次 爲每個被測試的類。因此它取決於你想要在兩種方法之間進行選擇。
我猜這裏是答案:http://stackoverflow.com/questions/12379949/xunit-resharper-how-to-run-setup-code-only-once –