25

コード化された ui テストを作成しており、アプリケーションがまだ開いていない場合は開いています。次に、それらのいずれかが失敗した場合、アプリケーションを閉じます。複数のプロジェクトに複数のテストがあるということです。すべてのテストの実行が完了した後にアプリケーションを閉じる方法はありますか? おそらくtestSettingsファイルに何かありますか?

これが少しでも役に立てば、すべてのテスト クラスは 1 つの codeduiTestBase から派生します。これは、私が持っている設定をセットアップする方法です。

各テストの実行前後にアプリケーションを開いたり閉じたりする必要はありません。これは大きなアプリケーションであり、ロードに時間がかかりすぎるためです。

4

4 に答える 4

58

はい、可能です。この目的で AssemblyCleanup 属性を使用できます。

アセンブリ内のすべてのテストが実行された後、アセンブリによって取得されたリソースを解放するために使用されるコードを含むメソッドを識別します。

以下は、実行時間に従って並べられたすべての MSTest メソッドの概要です。

using Microsoft.VisualStudio.TestTools.UnitTesting;
using SampleClassLib;
using System;
using System.Windows.Forms;

namespace TestNamespace
{
    [TestClass()]
    public sealed class DivideClassTest
    {
        [AssemblyInitialize()]
        public static void AssemblyInit(TestContext context)
        {
            MessageBox.Show("AssemblyInit " + context.TestName);
        }

        [ClassInitialize()]
        public static void ClassInit(TestContext context)
        {
            MessageBox.Show("ClassInit " + context.TestName);
        }

        [TestInitialize()]
        public void Initialize()
        {
            MessageBox.Show("TestMethodInit");
        }

        [TestCleanup()]
        public void Cleanup()
        {
            MessageBox.Show("TestMethodCleanup");
        }

        [ClassCleanup()]
        public static void ClassCleanup()
        {
            MessageBox.Show("ClassCleanup");
        }

        [AssemblyCleanup()]
        public static void AssemblyCleanup()
        {
            MessageBox.Show("AssemblyCleanup");
        }

        [TestMethod()]
        [ExpectedException(typeof(System.DivideByZeroException))]
        public void DivideMethodTest()
        {
            DivideClass.DivideMethod(0);
        }
    }
}

参照: MSTest-メソッド

于 2013-02-08T15:18:01.530 に答える
1

1 つのクラス内のすべてのテストが終了した後にクリーンアップするだけの場合は、AssemblyCleanup 属性ではなく ClassCleanup 属性を使用します。

于 2016-05-20T10:08:12.937 に答える
1

おそらく、あなたが探しているのはTestCleanup 属性ですか?

編集: また、すべてのテストが実行された後に何かを実行する場合は、AssemblyCleanupAttributeの方が適切な場合があります。

于 2013-02-08T15:16:40.730 に答える