目录
写在前面
MSTest是微软官方提供的.NET平台下的单元测试框架;可使用DataRow属性来指定数据,驱动测试用例所用到的值,连续对每个数据化进行运行测试,也可以使用DynamicData 属性来指定数据,驱动测试用例所用数据的成员的名称、种类(属性、默认值或方法)和定义类型(默认情况下使用当前类型)
代码实现
新建目标类DataChecker,增加待测试的方法,内容如下:
public class DataChecker
{
public bool IsPrime(int candidate)
{
if (candidate == 1)
{
return true;
}
return false;
}
public int AddInt(int first,int second)
{
int sum = first;
for (int i = 0; i < second; i++)
{
sum += 1;
}
return sum;
}
}
新建单元测试类UnitTest1
namespace MSTestTester.Tests;
[TestClass]
public class UnitTest1
{
private readonly DataChecker _dataChecker;
public UnitTest1()
{
_dataChecker = new DataChecker();
}
[TestMethod]
[DataRow(-1)]
[DataRow(0)]
[DataRow(1)]
public void IsPrime_ValuesLessThan2_ReturnFalse(int value)
{
var result = _dataChecker.IsPrime(value);
Assert.IsFalse(result,$"{value} should not be prime");
}
[DataTestMethod]
[DataRow(1,1,2)]
[DataRow(2,2,4)]
[DataRow(3,3,6)]
[DataRow(0,1)] // The test run with this row fails
public void AddInt_DataRowTest(int x,int y,int expected)
{
int actual = _dataChecker.AddInt(x,y);
Assert.AreEqual(expected,actual,"x:<{0}> y:<{1}>",new object[] { x,y });
}
public static IEnumerable<object[]> AdditionData
{
get
{
return new[]
{
new object[] { 1,2 },new object[] { 2,4 },new object[] { 3,6 },new object[] { 0,1 },};
}
}
[TestMethod]
[DynamicData(nameof(AdditionData))]
public void AddIntegers_FromDynamicDataTest(int x,y });
}
}
执行结果
打开命令行窗口执行以下命令:
dotnet test
符合预期结果
原文地址:https://blog.csdn.net/rjcql/article/details/135141888
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。