SetupFixture
統合テストアセンブリの必要に応じて1回限りのセットアップを行うために、属性を使用してクラスを作成しました。
[SetUpFixture]
public static class IntegrationTestsBase
{
public static IKernel Kernel;
[SetUp]
public static void RunBeforeAnyTests()
{
Kernel = new StandardKernel();
if (Kernel == null)
throw new Exception("Ninject failure on test base startup!");
Kernel.Load(new ConfigModule());
Kernel.Load(new RepositoryModule());
}
[TearDown]
public static void RunAfterAnyTests()
{
Kernel.Dispose();
}
}
Resharpers Unit Test Sessionウィンドウには、プロジェクトと名前空間に設定されたグループ化があります。ただし、このインスタンスクラスを使用すると、Resharpersユニットテストセッションでは次のようになります。
無視:テストは明示的に実行する必要があります
MsTestランナーでこれらのテストを実行してみました:
結果メッセージ:IntegrationTestsBaseは抽象クラスです。
このクラスを名前空間にラップしようとしましたが、何も変更されていません。個々のテストを1つずつ実行すると実行されますが、GUIからすべてを実行することはできません。
このアセンブリに含まれるすべてのテストを実行できるようにするには、この問題を修正するにはどうすればよいですか?
NUnit 2.6.4、Resharper 2015.2、およびVS2015アップデート1を使用します。
Testclassは、Testframeworkによってインスタンス化されるため、静的である必要はありません。静的クラスは通常、インスタンス化できません。
最も簡単な修正はstatic
、Kernel
プロパティから以外のキーワードを削除することです。
[SetUpFixture]
public class IntegrationTestsBase
{
public static IKernel Kernel;
[SetUp]
public void RunBeforeAnyTests()
{
Kernel = new StandardKernel();
if (Kernel == null)
throw new Exception("Ninject failure on test base startup!");
Kernel.Load(new ConfigModule());
Kernel.Load(new RepositoryModule());
}
[TearDown]
public void RunAfterAnyTests()
{
Kernel.Dispose();
}
}
入力したものはすべてKernel
共有されるため、このテストを複数のスレッドで実行する場合、入力したクラスKernel
は単一のテストに分離されないことに注意してください。これは、注意するか、補償する必要があるものです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加