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指令,请使用它。也许可以问问那位女士,她为什么这样教。