在给定构建运行时,让Team Foundation Server运行单元测试的步骤是什么?
在第一次设置TFS服务器时,开发人员或系统管理员应该注意哪些警告/陷阱/变通办法?
构建期间单元测试问题的常见故障排除步骤是什么?
以下方法失败:
[TestMethod]
public void VerifyArrays()
{
int[] actualArray = { 1, 3, 7 };
Assert.AreEqual(new int[] { 1, 3, 7 }, actualArray);
}
Run Code Online (Sandbox Code Playgroud)
如何在不迭代集合的情况下通过它?
我一直在使用MSpec编写我的单元测试,并且更喜欢BDD风格,我认为它更具可读性.我现在正在使用MSpec不支持的Silverlight,所以我不得不使用MSTest,但仍然希望保持BDD风格,所以我想尝试一种方法来做到这一点.
只是为了解释我想要实现的目标,这就是我如何编写MSpec测试
[Subject(typeof(Calculator))]
public class when_I_add_two_numbers : with_calculator
{
Establish context = () => this.Calculator = new Calculator();
Because I_add_2_and_4 = () => this.Calculator.Add(2).Add(4);
It should_display_6 = () => this.Calculator.Result.ShouldEqual(6);
}
public class with_calculator
{
protected static Calculator;
}
Run Code Online (Sandbox Code Playgroud)
因此,对于MSTest,我会尝试像这样编写测试(虽然你可以看到它不起作用,因为我已经输入了2个TestInitialize属性,但是你得到了我正在尝试做的...)
[TestClass]
public class when_I_add_two_numbers : with_calculator
{
[TestInitialize]
public void GivenIHaveACalculator()
{
this.Calculator = new Calculator();
}
[TestInitialize]
public void WhenIAdd2And4()
{
this.Calculator.Add(2).Add(4);
}
[TestMethod]
public void ThenItShouldDisplay6()
{
this.Calculator.Result.ShouldEqual(6);
}
}
public class with_calculator
{
protected Calculator Calculator {get;set;} …Run Code Online (Sandbox Code Playgroud) 将nunit测试集成到TFS 2010的最佳方法是什么?是通过通用测试还是有更好的方法来运行它们?
理想情况下,我希望每个测试程序集具有一个通用测试的粒度,并且可以在TFS构建报告中显示结果.
什么是使用正确的方式Assert.Inconclusive,并IgnoreAttribute在MS单元测试框架?
我们Assert.Inconclusive主要用于以下测试:
我们这样做是因为:
我们的问题是Inconclusive测试在TFS和Resharper中都被标记为错误.如果我们使用,IgnoreAttribute我们将在Resharper中看到这些测试,但MS Test runner和TFS将完全忽略它们.使用IgnoreAttribute在TFS和MS测试亚军是同样喜欢评论整个测试是无用的.
问题:
任何人都可以告诉我为什么我的单元测试失败了这个错误消息?
CollectionAssert.AreEquivalent失败.预期的集合包含1次出现.实际集合包含0次出现.
目标:
我想检查两个列表是否相同.如果它们包含具有相同属性值的相同元素,则它们是相同的.订单无关紧要.
代码示例:
这是产生错误的代码.list1并且list2是相同的,即彼此的复制粘贴.
[TestMethod]
public void TestListOfT()
{
var list1 = new List<MyPerson>()
{
new MyPerson()
{
Name = "A",
Age = 20
},
new MyPerson()
{
Name = "B",
Age = 30
}
};
var list2 = new List<MyPerson>()
{
new MyPerson()
{
Name = "A",
Age = 20
},
new MyPerson()
{
Name = "B",
Age = 30
}
};
CollectionAssert.AreEquivalent(list1.ToList(), list2.ToList());
}
public class MyPerson
{ …Run Code Online (Sandbox Code Playgroud) 我有一些产生无限循环的代码.现在我需要编写一个在大约200ms后失败的测试.200ms将指示代码处于无限循环中.
例如:
public void CodeUnderTest()
{
while(true)
{
}
}
Run Code Online (Sandbox Code Playgroud) 什么是以下MSTest代码的xUnit等价物:
Assert.Inconclusive("Reason");
Run Code Online (Sandbox Code Playgroud)
这给出了黄色测试结果,而不是通常的绿色或红色.我想断言由于某些条件而无法运行测试,并且在满足这些条件后应该重新运行测试.
我已经使用MSTest.TestAdaptor 1.1.17在Visual Studio 2017中运行了测试组件.我想使用DataTestMethod来运行包含多个数据集的测试.我的问题是,我想在我的DataRows中使用十进制值,但不能:
[DataTestMethod]
[DataRow(1m, 2m, 3m)]
[DataRow(1, 2, 3)]
[DataRow(1.0, 2.0, 3.0)]
public void CheckIt(decimal num1, decimal num2, decimal expected)
{
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用[DataRow(100m, 7m, 7m)]它时甚至不会编译源:error CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type..
当我使用[DataRow(100, 7, 7)]测试时,测试将失败,因为我的测试期望decimal但是得到int32的值.
当我使用[DataRow(100.0, 7.0, 7.0)]测试时,测试将失败,因为我的测试期望decimal但是得到double的值.
为什么我不能在DataRow中使用十进制数?
如何配置.NET解决方案(C#,.NET 2.0)以允许其他开发人员使用NUnit或MSTest对解决方案使用相同的单元测试?
背景:
在这个项目中,一些开发人员使用VS2005 Team Edition,而其他开发人员使用VS2005 Pro,因此并非所有开发人员都能够运行MSTest.鉴于这是一个企业项目,团队无法使用TestDriven.net或ReSharper.我知道使用VS中的任何一种产品都可以解决这个问题,但考虑到授权购买许可证所需的时间,购买这些产品中的任何一种都不是一个可行的选择.
提前感谢您的帮助,MagicAndi.
mstest ×10
unit-testing ×8
c# ×5
.net ×4
nunit ×2
.net-2.0 ×1
assert ×1
assertion ×1
bdd ×1
generic-test ×1
installation ×1
mspec ×1
resharper ×1
team-build ×1
tfs ×1
tfs2010 ×1
tfsbuild ×1
xunit ×1