属性对照
| MSTest | NUnit | xUnit.net | 描述 |
| [TestMethod] | [Test] | [Fact] | 标记为测试方法 |
| [TestClass] | [TestFixture] | n/a | 包含有测试方法的类,在xUnit.net中无需标记,它会查找程序集中所有的public的测试方法 |
| [ExpectedException] | [ExpectedException] |
Assert.Throws Record.Exception | 期望抛出异常 |
| [TestInitialize] | [SetUp] | Constructor | 在每个测试方法执行之前用于初始化的方法 |
| [TestCleanup] | [TearDown] | IDisposable.Dispose | 在每个测试方法执行之后用于结束的方法 |
| [ClassInitialize] | [TestFixtureSetUp] | IUseFixture<T> |
在所有测试方法执行之前用于初始化的方法 |
| [ClassCleanup] | [TestFixtureTearDown] | IUseFixture<T> |
在所有测试方法执行之后用于结束的方法 |
| [Ignore] | [Ignore] | [Fact(Skip="reason")] |
临时忽略被标记的方法 |
| [Timeout] | [Timeout] | [Fact(Timeout=n)] | 用于指定被测试方法的最大执行时间(单位毫秒),如果超过指定时间则会被标记为测试失败 |
| [DataSource] | [TestCase] | [Theory], [XxxData] |
数据测试 |
方法
| MSTest | NUnit | xUnit.net | Comments |
| AreEqual | AreEqual | Equal |
相等比较 |
| AreNotEqual | AreNotEqual | NotEqual |
不相等比较 |
| AreNotSame | AreNotSame |
NotSame | 不相同比较 |
| AreSame | AreSame |
Same | 相同比较 |
NUnit 打印需要引用
NUnit、 Microsoft.NET.Test.SDK、Nunit3TestAdapter
XUnit打印需要引用
Microsoft.NET.Test.SDK、XUnit、xunit.runner.visualstudio
同时测试类中增加
private readonly ITestOutputHelper output;
public UnitTest1(ITestOutputHelper output)
{
this.output = output;
}
通过 output.WriteLine输出,就可以在测试管理器相关测试方法下看见输出
这篇博客详细比较了三种流行的.NET测试框架——MSTest、NUnit和xUnit.net。它们在标记测试方法、类、异常处理等方面存在一些共同点和差异。例如,`[TestMethod]`、`[Fact]`用于标记测试方法,而`[TestClass]`、`[TestFixture]`用于标记包含测试方法的类。在异常处理上,MSTest和NUnit使用`[ExpectedException]`,而xUnit.net则通过`Assert.Throws`。此外,博客还介绍了如何设置测试初始化和清理方法,以及如何使用`[Timeout]`来限制测试执行时间。对于数据驱动测试,xUnit.net提供了`[Theory]`和`[InlineData]`等特性。最后,博客提到了如何在不同测试框架中进行断言操作,如`AreEqual`、`Assert.Throws`等,并且给出了如何在测试输出中查看详细信息的方法。

2万+

被折叠的 条评论
为什么被折叠?



