c# - 这个单元测试在练习时如何通过?
问题描述
我已经创建了两个不相等的变量,我if
为该方法创建了一个语句,并且在 Visual Studio 上它仍然通过,我让它失败的唯一方法是如果我if
完全删除该语句然后使用
Assert.IsTrue(a == b);
但是,如果我尝试通过if
语句使用它,它会由于某种原因通过
[TestClass]
public class SectionQuiz
{
static int a;
static int b;
[ClassInitialize]
public static void IntegerInitalize(TestContext testContext)
{
a = 10; // set variables and a != b
b = 5;
}
[TestMethod]
public void Number1_isnotequalto_number2()
{
if (a == b)
{
Assert.IsTrue(a==b);
}
}
}
解决方案
if 语句与它是否通过无关。单元测试Number1_isnotequalto_number2没有断言任何东西,所以它总是会通过。
将此行添加到单元测试Number1_isnotequalto_number2的末尾和 if 语句之外。
Assert.AreEqual(a, b);
通过添加这一行,考虑到您的初始化,单元测试应该总是失败。
另一种选择- 如果您想将 if 语句与断言结合起来,但通常不会像这样......
if (a != b)
Assert.Fail("they are not equal");
// else
// There is no Assert.Pass - just return and it passes
推荐阅读
- vue.js - 具有哈希模式的 vue-router 子路由滚动位置处理
- javascript - 如何在 IIS 上运行 nodejs
- python - 如何在函数中使用 LOCAL VARIABLE,例如其他函数的 GLOBAL VARIABLE 变量
- r - 使用 setseed 时,如果我将种子设置为 set.seed(123),它会选择与不同系统相同的数据库吗?
- c# - 如何从使用 mvc 和 c# 的水平滚动的 instagram 提要中获取图像
- vim - vim在多行上复制和粘贴不同长度的字符
- consul - 使用 DNS 发现 + Consul 引导 etcd 集群时失败
- c++ - Qt:文本编辑器如何执行替换操作并在循环回到他们曾经执行的第一个替换时停止?
- javascript - 三星 s7 上的 CSRF 令牌验证错误
- java - 寻找看起来真实的命令行工作和源代码