c# - 如何使单元测试方法更短
问题描述
我有一些单元测试。像这样:
[TestFixture]
public class Tests
{
[SetUp]
public void Setup()
{
}
}
但它看起来几乎是相同的代码。可以写得更短吗?
我正在使用 NUnit 测试框架。
这是代码:
public class Parcel
{
//Some code
}
现在可以使用
解决方案
您可以使用TestCase而不是 Test 属性来运行具有不同数据的相同测试代码,例如
[TestCase(0.02m, "Name: parcel - Postal code 2582Cd - Weight 0,02 - Value 0,0 - Department Mail")]
[TestCase(2m, "Name: parcel - Postal code 2582Cd - Weight 2 - Value 0,0 - Department Regular")]
public void ParcelsWithSpecificWeightShouldBeSpecificToString(decimal weight, string expected)
{
var parcel = new Parcel { Name="parcel", PostalCode = "2582Cd", Weight = weigth, Value = 0.0m };
Assert.AreEqual(expected, parcel.ToString());
}
但实际上您正在测试该Department
属性,所以我建议不要测试parcel.ToString()
,但是parcel.Department
:
[TestCase(0.02m, "Mail")]
[TestCase(2m, "Regular")]
public void ParcelsWithSpecificWeightShouldBeSpecificDepartment(decimal weight, string expected)
{
var parcel = new Parcel { Name="parcel", PostalCode = "2582Cd", Weight = weigth, Value = 0.0m };
Assert.AreEqual(expected, parcel.Department);
}
推荐阅读
- python-3.x - Python 3 - 如何使用所有可能的 6 位数员工 ID 强制 PDF 文件的密码?
- oauth - 基本问题:如何允许同一工作区中的用户安装我的应用程序?
- javascript - 如何在单元测试 SinonJs 中使用正确的参数检查该方法是否被调用?
- reactjs - setState 之前的异步函数
- apache - 为什么nginx不转发Apache在代理模式下发送的Vary header?
- python - 如何优化 Dockerfile 层缓存的 pip 导入
- java - 如何使用光标逐行返回所有数据库结果 - SQLite 数据库*工作*
- java - 我如何在 jboss 中修复此错误:当前节点成为协调器后无法恢复集群状态
- r - 从 R 中的 FitARMA 中提取 AIC
- javascript - 使用 window.crypto.subtle API 解密来自浏览器的 AES-CTR 256 位消息