Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这个单元测试在运行时是如何通过的?_C#_Unit Testing - Fatal编程技术网

C# 这个单元测试在运行时是如何通过的?

C# 这个单元测试在运行时是如何通过的?,c#,unit-testing,C#,Unit Testing,我已经创建了两个变量,两个变量都不相等,我已经为该方法创建了一个if语句,并且在visual studio上它仍然通过,唯一失败的方法是完全删除if语句,然后使用它 Assert.IsTrue(a == b); 但是如果我尝试通过if语句使用它,它会因为某种原因而传递 [TestClass] public class SectionQuiz { static int a; static int b; [ClassInit

我已经创建了两个变量,两个变量都不相等,我已经为该方法创建了一个
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\u是notequalto\u number2没有断言任何内容,因此它将始终通过

将此行添加到单元测试编号1\u isnotequalto\u编号2的末尾,并在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

由于某种原因,它通过了,这意味着您将在测试资源管理器中看到绿点?@GrizzlyBear请尽量不要编辑原始问题,使其超出现有答案的上下文范围。相反,要么在同一个问题中附加后续内容(如果是相关的小疑问),要么发布一个新问题,并在需要时提及前一个问题;但出于某种原因,它并没有改变。所以我正在学习这门课程,这位女士通过单元测试的if语句来展示它;所以有点困惑。所以我的问题是,如果语句和断言相结合,而不仅仅是断言@dodgy,你能做到这一点吗_coder@GrizzlyBear没问题,是的,你可以用ifs和asserts来做。。我将编辑我的答案…@GrizzlyBear请记住,使用if语句编写单元测试是一个可怕的想法。如果有等效的assert指令,请使用它。也许可以问问那位女士,她为什么这样教。