相关疑难解决方法(0)

什么是MSTest中[TearDown]和[SetUp]的替代品?

当我使用MSTest Framework,并复制Selenium IDE为我生成的代码时,MSTest无法识别[TearDown][SetUp].有什么替代方案?

c# selenium automated-tests mstest

232
推荐指数
4
解决办法
8万
查看次数

在DataTestMethod的每个DataRow之前和之后,TestInitialize和TestCleanup均未运行

在下面,您可以在Window Phone Unit Test App中看到一些用Mstest编写的代码。
我有一个称为TestMethod1的普通TestMethod 和一个名为TestMethod2的DataTestMethod ,它具有三个DataRows:

[TestClass]
public class UnitTest1
{
    [TestInitialize]
    public void Setup()
    {
        Debug.WriteLine("TestInitialize");
    }

    [TestMethod]
    public void TestMethod1()
    {
        Debug.WriteLine("TestMethod1");
    }

    [DataTestMethod]
    [DataRow("a")]
    [DataRow("b")]
    [DataRow("c")]
    public void TestMethod2(string param)
    {
        Debug.WriteLine("TestMethod2 param=" + param);
    }

    [TestCleanup]
    public void TearDown()
    {
        Debug.WriteLine("TestCleanup");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果以调试模式运行测试(在Visual Studio中为Ctrl + R,Ctrl + T),则会在输出面板中看到以下内容:

TestInitialize
TestMethod1
TestCleanup
TestInitialize
TestMethod2 param = c
TestMethod2 param = a
TestMethod2 param = b
TestCleanup

如您所见,TestInitialize仅执行了两次:一次在TestMethod1之前,一次在带有参数c的TestMethod2之前。
对于TestCleanup来说是相同的,它在TestMethod1之后执行一次,并在最后一次执行一次。

我希望无论测试是TestMethod还是DataTestMethod,在每次测试之前和之后都要执行TestInitialize和TestCleanup。否则,一项测试的执行会影响下一项测试。

我希望它是这样的: …

c# unit-testing windows-phone vs-unit-testing-framework windows-phone-8

5
推荐指数
1
解决办法
2286
查看次数