c# - 如何在 NUnit 中使用带有 TestCasesSource 的元组?
问题描述
我一直在使用NUnit unitl 在C#中编写一些测试我遇到了一个测试问题,我想通过2 次 3 项元组作为测试的参数。似乎与此处描述的类似问题:如何在 nunit TestCases 中使用元组?
因此,我通过引入新的静态方法并将其名称传递给TestCaseSource来实现该解决方案,但是在我的情况下它似乎并不能完全工作。唯一的区别是我的元组由3 个 Item 元组而不是2组成。
测试只是部分通过- 它通过了Assert.AreEqual但不知何故它没有通过整个测试(奇怪的是考虑到只有一组参数的事实?)并显示 1 test has not been run。
下面是测试源代码:
[Test]
[TestCaseSource(nameof(TestGetTimeLeftData))]
public void TestGetTimeLeft((int, int, int) alarmTime, (int, int, int) clockTime)
{
(int, int, int) expectedTime = (3, 0, 0);
(int, int, int) result = Helper.GetTimeLeft(alarmTime, clockTime);
Assert.AreEqual(expectedTime, result);
}
private static IEnumerable<(int, int, int)[]> TestGetTimeLeftData
{
get
{
yield return new[] { (2, 0, 0), (23, 0, 0) };
}
}
我错过了什么或做错了什么?
提前致谢
解决方案
您的测试需要两个参数,都是(int, int, int)
. yield
测试用例源中的语句返回一个参数,它是一个(int, int, int)
. 那不是一回事。
尝试返回一个TestCaseData
对象...
private static IEnumerable<TestCaseData> TestGetTimeLeftData
{
get
{
yield return new TestCaseData((2, 0, 0), (23, 0, 0));
}
}
这可以使用对象数组来完成,但TestCaseData
存在是为了更容易编写测试用例源。
推荐阅读
- python - Python Reaction Response 中的 Discord Bot
- python - 如果字典中存在部分查询,则添加 +1
- git - 我的 GitHub 操作只是挂在没有日志的启动状态,这是怎么回事?
- go - googleapi:错误 403:请求的身份验证范围不足。更多细节:原因:权限不足,消息:权限不足
- javascript - JavaScript Service Worker 在后台发送消息
- sql - 拉取日期记录在当前状态是第一个
- c# - 当您还在 EFCore 3.1.11 中选择其他对象列表时,左连接不会带来所有结果
- php - PHP:调用未定义函数 mysqli_connect() - 在 WINDOWS 上
- python - 如何在熊猫中使用合并两列以使结果具有相同的行数?
- r - R中具有多列整数的堆积条形图