首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Visual Studio对执行方法进行排序以进行集成测试?

如何使用Visual Studio对执行方法进行排序以进行集成测试?
EN

Stack Overflow用户
提问于 2011-01-14 03:36:48
回答 2查看 10.8K关注 0票数 18

关于使用VS2010进行集成测试,我有两个问题

首先,我真的需要找到一种方法来按我想要的顺序执行这些测试方法。注意:我知道在单元测试中,方法应该独立于其他任何东西运行,但这些是集成测试,我确实依赖于哪个方法首先运行的顺序。

同样,有没有一种方法可以通过运行测试来保持局部变量?例如,下面的代码现在失败了。

代码语言:javascript
复制
[TestClass]
public class UnitTest1
{
    int i = 0;
    [TestMethod]
    public void TestMethod1()
    {
        i = 5;
    }

    [TestMethod]
    public void TestMethod2()
    {
        Assert.AreEqual(5, i);
    }
}

那么有没有办法做到这些呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-14 15:37:36

为了按照特定的顺序执行测试,我遵循了以下步骤:

在包含test1、test2和test3的测试项目中

1右击项目'Add'->'new test...‘

2.选择“有序测试”

3双击出现"OrderedTest1.orderedtest“的文件

4如果以前没有构建过项目,则构建项目

5从可用测试列表中选择所需的测试并对其进行排序

此时,将在测试列表编辑器中显示一个新测试

这是一个额外的测试,它以正确的顺序运行包含的测试,但是如果您不小心运行项目中的所有测试,有序列表中包含的测试将被执行两次,因此您需要以某种方式管理列表或测试类别以避免这种情况。

我尝试禁用单个测试,但这也禁用了有序测试,我不知道更好的方法。

票数 21
EN

Stack Overflow用户

发布于 2011-01-14 04:46:46

通过使用属性TestInitialize和TestCleanUp或ClassInitialize和ClassCleanup,使用函数来设置和清理测试是最佳实践。

http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting(v=VS.100).aspx

下面的代码是一个类似于您想要的东西的示例:

代码语言:javascript
复制
[TestClass]
public class UnitTest1
{
    int i=0;

    [TestInitialize]
    public void Setup()
    {
        i = 5;
    }

    [TestMethod]
    public void TestMethod1()
    {
        Assert.AreEqual(5, i);
    }
}

在执行每个测试之前,将调用函数SetUp。如果您需要将值从一个测试传递到另一个测试,则可能需要考虑使用静态变量,因为执行顺序不确定,因此不推荐使用静态变量。

通常,有一种方法可以通过使用设置/清理技术来避免需要特定的顺序,但对于非常复杂的集成测试来说,这可能不是真的。

如果没有可能的方法来避免让它们重新排序,您可以考虑将它们合并到一个中,再次打破每次测试只有一个断言的最佳实践,但如果它们彼此之间有如此多的依赖关系,这种方式可能会更好,因为在这种情况下,一个测试失败可能会损害其他测试的结果。

编辑:可能使用有序测试回答问题1,并使用静态变量问题2:http://msdn.microsoft.com/en-us/library/ms182631.aspx

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4684408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档