Ray*_*Ray 18 testing integration-testing visual-studio-2010
关于使用VS 2010进行集成测试,我有两个问题
首先,我真的需要找到一种方法来按照我想要的顺序执行这些测试方法.注意:我知道在单元测试中,方法应该从其他任何东西独立运行,但这些是集成测试,我依赖于首先运行哪个方法的顺序.
同样,有没有办法通过运行测试来保持局部变量?例如,以下代码现在失败了.
[TestClass]
public class UnitTest1
{
int i = 0;
[TestMethod]
public void TestMethod1()
{
i = 5;
}
[TestMethod]
public void TestMethod2()
{
Assert.AreEqual(5, i);
}
}
Run Code Online (Sandbox Code Playgroud)
那么有没有办法做到这些呢?
Cri*_*n T 21
要按特定顺序执行测试,我按照以下步骤操作:
在test1,test2和test3的测试项目中
1右键单击项目"添加" - >"新测试..."
2选择"有序测试"
3双击出现的文件"OrderedTest1.orderedtest"

4如果之前未构建项目,则构建项目
5从可用测试列表中选择所需的测试并对其进行排序

从那时起,测试列表编辑器中出现了一个新测试

它是运行在正确的顺序封闭测试的额外的测试,但如果你的项目包含在有序列表不慎测试运行所有测试都需要进行两次,所以你需要以某种方式管理列表或测试类别,以避免执行.
我尝试禁用单个测试,但也禁用了有序测试,我不知道更好的方法.
最佳做法是使用函数[TestInitialize]和[TestCleanUp]或[ClassInitialize]和[ClassCleanup]来设置测试并清理它们.
http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting(v=VS.100).aspx
下一个代码是一个类似于你想要的东西的例子:
[TestClass]
public class UnitTest1
{
int i=0;
[TestInitialize]
public void Setup()
{
i = 5;
}
[TestMethod]
public void TestMethod1()
{
Assert.AreEqual(5, i);
}
}
Run Code Online (Sandbox Code Playgroud)
在执行每个测试之前将调用函数SetUp.如果需要将值从一个测试传递到另一个测试,则可能需要考虑使用不建议的静态变量,因为执行的不确定性顺序.
通常有一种方法可以通过使用setup/cleanup技术来避免需要特定的顺序,但对于非常复杂的集成测试来说,这可能不是这样.
如果没有可能的方法来避免让它们重新排序,你可以考虑将它们合并为一个,再次打破每个测试只有一个断言的最佳实践,但如果它们与另一个相互依赖,那么它可能会更好因为在这种情况下,一个测试失败可能会损害其他测试的结果.
编辑:可能正在使用有序测试答案问题1,并使用静态变量问题2:http: //msdn.microsoft.com/en-us/library/ms182631.aspx
| 归档时间: |
|
| 查看次数: |
10598 次 |
| 最近记录: |