1. ホーム
  2. .net

[解決済み] すべてのテストが実行される前に、コードを一度実行することは可能ですか?

2022-08-18 16:50:23

質問

基本的には、一連のテスト実行を開始する前に、MSTest にちょっとしたコードを実行するように指示したいのですが、私がやりたいことは、基本的には、いくつかのコードを Main() .

なぜこのようなことをしたいかというと、統合テストの実行中にlog4netでロギングを行いたいからです。 私は、単に log4net.Config.XmlConfigurator アセンブリ属性を使用することはできません。なぜなら、私のテストアセンブリでそれを読み取る時点で、すでに LoggerManager . ドキュメントでは、コードのエントリポイントで明示的にlog4netを構成することを推奨していますが、私のテストのどこにそれがあるのでしょうか?

私はTestDriven.NETとMSTestランナーで私のテストを実行できるようにする必要があります。

どのように解決するのですか?

FWIWでは AssemblyInitialize 属性を使って、アセンブリ内のすべてのユニットテストが実行される前にコードを実行することができます。

[TestClass]
public class SetupAssemblyInitializer
{
    [AssemblyInitialize]
    public static void AssemblyInit(TestContext context)
    {
        // Initalization code goes here
    }
}

ユニットテストのアセンブリが複数ある場合、複数のアセンブリを包含するようなものは意識していません。

私が知る限り、これはMainに相当するものに近いと思います。

注意点として AssemblyInitialize -で装飾されたメソッド である TestClass -装飾されたクラスで、少なくとも一つの TestMethod -装飾されたメソッドを含むクラスで、そうでない場合は ではなく が実行されます!