所有测试在MStest中完成执行后是否可以运行代码

jge*_*tle 20 c# mstest

我正在编写编码的ui测试,如果它尚未打开,我将打开应用程序.然后,如果其中一个失败我关闭应用程序,事情是我在多个项目中有多个测试是否有办法在所有测试完成执行后关闭应用程序?testSettings文件中是否有可能存在的内容?

如果这有帮助,我的所有测试类都派生自一个codeduiTestBase,这就是我设置我所拥有的设置的方式.

我不想在每次测试运行之前和之后打开和关闭应用程序,因为它是一个很大的应用程序,加载时间太长.

MUG*_*G4N 50

对的,这是可能的.您可以使用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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅:MSTest-Methods