私的備忘録。
クラスで共通なコンテキストを扱いたいときは、IClassFixtureを使う。
- IDisposableを実装したFixtureクラスを作る。デフォルトコンストラクタで初期化、Disposeで終了処理を記述しとく
- 利用側では、IClassFixture
な形で実装しておくと、 - コンストラクタにFixtureクラスを書いてインジェクトされる。
public class T1Fixture : IDisposable { public T1Fixture() { } public void Dispose() { } } public class T2Fixture : IDisposable { public T2Fixture() { } public void Dispose() { } } public class UnitTest1 : IClassFixture<T1Fixture>, IClassFixture<T2Fixture> { private readonly T1Fixture _t1; private readonly T2Fixture _t2; private readonly ITestOutputHelper _output; public UnitTest1(T1Fixture t1, T2Fixture t2, ITestOutputHelper output) { _t1 = t1; _t2 = t2; _output = output; } [Fact] public void Test1() { Assert.NotNull(_t1); Assert.NotNull(_t2); _output.WriteLine("OK"); } }
元ネタは以下です。