c# - 断言中的逻辑运算符是否可以接受?

标签 c# unit-testing tdd nunit

<分区>

您如何看待以下断言?

Assert.IsTrue(condition1 && condition2);

我在审查 session 期间提出了这种类型的断言。据我所知,在断言中使用 && 运算符不是一个好习惯。我想知道别人怎么想?是否值得一提这是下一次审查 session 期间的一个问题?或者这只是个人喜好?

最佳答案

当你写作时

Assert.IsTrue(condition1 && condition2);

然后不清楚导致测试失败的原因 - 第一个或第二个条件。因此,您需要它们都为 true,只需一个接一个地检查即可:

Assert.IsTrue(condition1);
Assert.IsTrue(condition2);

现在让我们想想 OR 条件有什么问题:

Assert.IsTrue(condition1 || condition2);

这看起来像是随机测试 - 它会在不同的场景中通过:

  1. 第一个条件为真,第二个条件为假
  2. 如果两者都为真
  3. 如果第二个为真但第一个为假

那么,您要检查的具体场景是什么?创建三个不同的场景来重现这三种情况。每个测试将包含两个断言,例如对于最后一个场景:

Assert.IsFalse(condition1);
Assert.IsTrue(condition2);

关于c# - 断言中的逻辑运算符是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18830500/

相关文章:

zend-framework - 测试策略。 PHPUnit 在 zend 框架 Controller 集成/冒烟测试中进行模拟

c# - GetHashCode 使用哪个哈希函数?

c# - 我如何将静态字符串与对象类型关联 C#

java - 如何在 Spring Boot 单元测试中模拟 JWT 身份验证?

javascript - 使用Sinon和Proxyquire对AWS SES进行 stub

tdd - 测试接口(interface)有意义吗?

c# - 能否使用设计模式重构此 MVC 代码?

c# - Json.NET 保留 native 类型

python - 使用 mock.patch 给我 AttributeError ("<module ' 包 1'' > 没有属性 'myfunc' “?

python - 如何测试为 CBV ListView 生成的上下文中是否存在 'object_list'