【发布时间】:2012-02-24 23:52:25
【问题描述】:
在xUnit.net框架中有没有类似NUnit以下特性的手段?
[Test, TestCaseSource("CurrencySamples")]
public void Format_Currency(decimal value, string expected){}
static object[][] CurrencySamples = new object[][]
{
new object[]{ 0m, "0,00"},
new object[]{ 0.0004m, "0,00"},
new object[]{ 5m, "5,00"},
new object[]{ 5.1m, "5,10"},
new object[]{ 5.12m, "5,12"},
new object[]{ 5.1234m, "5,12"},
new object[]{ 5.1250m, "5,13"}, // round
new object[]{ 5.1299m, "5,13"}, // round
}
这将在 NUnit GUI 中生成 8 个单独的测试
[TestCase((string)null, Result = "1")]
[TestCase("", Result = "1")]
[TestCase(" ", Result = "1")]
[TestCase("1", Result = "2")]
[TestCase(" 1 ", Result = "2")]
public string IncrementDocNumber(string lastNum) { return "some"; }
这将生成 5 个单独的测试并自动比较结果 (Assert.Equal())。
[Test]
public void StateTest(
[Values(1, 10)]
int input,
[Values(State.Initial, State.Rejected, State.Stopped)]
DocumentType docType
){}
这将生成 6 个组合测试。无价之宝。
几年前我尝试过 xUnit 并喜欢它,但它缺少这些功能。没有他们就活不下去。有什么变化吗?
【问题讨论】:
-
将复杂对象作为参数发送到测试方法complex types in Unit test的完整指南
标签: c# .net unit-testing nunit xunit.net