Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MSTest的全局测试初始化方法_C#_Mstest - Fatal编程技术网

C# MSTest的全局测试初始化方法

C# MSTest的全局测试初始化方法,c#,mstest,C#,Mstest,快速提问,如何创建一个在解决方案中的所有测试运行之前只运行一次的方法。创建一个公共静态方法,并用属性修饰。测试框架将在每次测试运行时调用此设置方法一次: [AssemblyInitialize()] public static void MyTestInitialize(TestContext testContext) {} 对于拆卸its: [AssemblyCleanup] public static void TearDown() {} 编辑: 另一个非常重要的细节:此方法所属的类必

快速提问,如何创建一个在解决方案中的所有测试运行之前只运行一次的方法。

创建一个公共静态方法,并用属性修饰。测试框架将在每次测试运行时调用此设置方法一次:

[AssemblyInitialize()]
public static void MyTestInitialize(TestContext testContext)
{}
对于拆卸its:

[AssemblyCleanup]
public static void TearDown() 
{}
编辑:


另一个非常重要的细节:此方法所属的类必须用
[TestClass]
修饰。否则,初始化方法将不会运行。

为了强调@driis和@Malice在接受的答案中所说的内容,下面是全局测试初始化器类的外观:

namespace ThanksDriis
{
    [TestClass]
    class GlobalTestInitializer
    {
        [AssemblyInitialize()]
        public static void MyTestInitialize(TestContext testContext)
        {
            // The test framework will call this method once -BEFORE- each test run.
        }

        [AssemblyCleanup]
        public static void TearDown() 
        {
            // The test framework will call this method once -AFTER- each test run.
        }
    }
}

抱歉,格式太糟糕了

        /// <summary>
        /// Use TestInitialize to run code before running each test
        /// Runs before every test executes
        /// </summary>
        [TestInitialize()]
        public void TestInitialize()
        {
           ...
           ...
        }


        /// <summary>
        /// Use TestCleanup to run code after each test has run
        /// Runs after every test executes
        /// </summary>
        [TestCleanup()]
        public void TestCleanup()
        {
           ...
           ...
        }
//
///在运行每个测试之前,使用TestInitialize运行代码
///在每个测试执行之前运行
/// 
[测试初始化()]
public void TestInitialize()
{
...
...
}
/// 
///使用TestCleanup在每个测试运行后运行代码
///在每个测试执行后运行
/// 
[TestCleanup()]
公共void TestCleanup()
{
...
...
}

我希望我知道,还有:(目前,我有一个抽象基类,每个TestClass都从中继承。在该类中,我有一个TestInitialize方法。问题是,每次运行新测试时都会触发该方法!让该抽象基类实现一个静态构造函数。在运行任何测试之前,只会触发一次。如果您在超过一个程序集MyTestInitialize将为您的测试运行多次调用。这可能不清楚-它不是为每个测试运行,而是为每个测试运行。这意味着如果您运行一组测试,例如在一个测试运行中运行一个类中的所有测试,或者在一个测试运行中运行该程序集中的所有测试,则会为该ru中的所有这些测试运行一次n、 因此,如果一次只运行一个测试,他们可以共享此方法的结果/副作用,也可以不共享。标记为[TestInitialize]的类是否也会在每次测试运行之前执行?AssemblyInitialize是否也会在每次测试运行之前运行,还是每个测试会话仅运行一次?[TestInitialize()]public void TestInitialize(){…}[TestCleanup()]public void TestCleanup(){…}请查看此StackOverflow链接,获取有关使用
[TestInitialize]
修饰的代码何时运行的简明答案: