【发布时间】:2011-05-07 11:48:01
【问题描述】:
在 C# 中,如何对大于条件进行单元测试?
即,如果记录数大于 5,则测试成功。
感谢任何帮助
代码:
int actualcount = target.GetCompanyEmployees().Count
Assert. ?
【问题讨论】:
标签: c# unit-testing testing
在 C# 中,如何对大于条件进行单元测试?
即,如果记录数大于 5,则测试成功。
感谢任何帮助
代码:
int actualcount = target.GetCompanyEmployees().Count
Assert. ?
【问题讨论】:
标签: c# unit-testing testing
除了好的答案,你总是可以有一个帮助类:
public static class AssertHelper
{
public static void Greater(int arg1, int arg2, string message = null)
{
Assert.IsTrue(arg1 > arg2, message);
}
public static void NotZero(int number, string message = null)
{
Assert.IsTrue(number != 0, message);
}
public static void NotNull(object obj, string message = null)
{
Assert.IsTrue(obj != null, message);
}
public static void IsNotEmpty(string str, string message = null)
{
Assert.IsTrue(str != string.Empty, message);
}
// etc...
}
用法:
AssertHelper.Greater(n1,n2)
【讨论】:
xUnit:如果您知道上限(例如 =100),您可以使用:
Assert.InRange(actualCount, 5, 100);
【讨论】:
使用 nUnit 时正确的做法是:
Assert.That(actualcount , Is.GreaterThan(5));
【讨论】:
Assert.Greater(actualcount, 5);
这取决于您使用的测试框架。
对于 xUnit.net:
Assert.True(actualCount > 5, "Expected actualCount to be greater than 5.");
对于 NUnit:
Assert.Greater(actualCount, 5);;然而,新的语法
鼓励Assert.That(actualCount, Is.GreaterThan(5));。
对于 MSTest:
Assert.IsTrue(actualCount > 5, "Expected actualCount to be greater than 5.");
【讨论】:
在 XUnit 中是:
[Fact]
public void ItShouldReturnErrorCountGreaterThanZero()
{
Assert.True(_model.ErrorCount > 0);
}
【讨论】:
可用于任何类似类型的通用解决方案:
public static T ShouldBeGreaterThan<T>(this T actual, T expected, string message = null)
where T: IComparable
{
Assert.IsTrue(actual.CompareTo(expected) > 0, message);
return actual;
}
【讨论】:
actualCount.Should().BeGreaterThan(5);
【讨论】:
Assert.IsTrue(actualCount > 5, "The actualCount was not greater than five");
【讨论】: