Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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#_Visual Studio_Selenium_If Statement - Fatal编程技术网

C# 硒:如何停止测试序列?

C# 硒:如何停止测试序列?,c#,visual-studio,selenium,if-statement,C#,Visual Studio,Selenium,If Statement,在VisualStudio中使用Selenium。使用NUnit对我的测试用例进行排序 我正在编写一个测试用例,将两个序列号与一个if语句进行比较,如下所示: [Test] public void CompareVariables() { if (string.Equals(serialNumberInfo, serialNumberReport)) Console.WriteLine($"{serialNumberInfo} and {serialNumberReport}

在VisualStudio中使用Selenium。使用NUnit对我的测试用例进行排序

我正在编写一个测试用例,将两个序列号与一个if语句进行比较,如下所示:

[Test]
public void CompareVariables()
{
   if (string.Equals(serialNumberInfo, serialNumberReport))
      Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} are a match! Proceed!");
   else
      Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
      //method for stopping test missing!
[Test]
public void CompareVariables()
{
   if (!string.Equals(serialNumberInfo, serialNumberReport))
      throw new Exception($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");

   // The rest of your tests (only run if serialNumberInfo and serialNumberReport) are equal.
}
如果序列号不匹配,我希望能够中止testsequence的其余部分


是否有一种“结束/停止测试”方法或类似的方法可以放在
的其他部分中?

我想您有两种选择

1) 只需抛出一个异常(并使测试失败)

引发异常将使单元测试失败。有不同类型的异常负载,但基本类型只是
Exception
。您可以检查可用的不同类型的异常。在可能的情况下,尝试选择最能代表错误的异常(例如,坏参数使用
ArgumentException
或其派生)

您的测试将如下所示:

[Test]
public void CompareVariables()
{
   if (string.Equals(serialNumberInfo, serialNumberReport))
      Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} are a match! Proceed!");
   else
      Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
      //method for stopping test missing!
[Test]
public void CompareVariables()
{
   if (!string.Equals(serialNumberInfo, serialNumberReport))
      throw new Exception($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");

   // The rest of your tests (only run if serialNumberInfo and serialNumberReport) are equal.
}
2) 使用断言(并使测试失败)

单元测试通常被认为是为了断言发生了令人满意的事情。如果这件事没有发生,那么应该抛出一个异常(通常由一些断言框架为您处理)

因此,您可以翻转测试来执行此操作:

[Test]
public void CompareVariables()
{
   serialNumberInfo.ShouldBe(serialNumberReport);

   // The rest of your tests (only run if serialNumberInfo and serialNumberReport) are equal.
}
这已经完成了,但是有无数的断言框架,所以选择你最喜欢的。(mstest有一个内置的,但我发现它可读性较差,但这是个人喜好)

请注意,仅当您希望显式确保应该发生断言时才使用断言。也就是说,这必须是真的,我的测试才能通过,而不是如果发生这种情况,然后中止。这很难解释,所以我希望这有意义

当某件事情出错时的例外情况,当某件事情本应正确时的断言

3) 离开测试(并通过测试)

如果测试在没有抛出异常的情况下退出(手动或通过断言框架),则该测试被视为通过测试。因此,如果你想将此视为通过,你可以简单地从测试中返回

[Test]
public void CompareVariables()
{
   if (string.Equals(serialNumberInfo, serialNumberReport))
   {
      Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} are a match! Proceed!");
   }
   else
   {
        Console.WriteLine($"{serialNumberInfo} and {serialNumberReport} don't match! Cancel test!");
        return;
   }

   // The rest of your tests
}

这会将测试标记为通过,但意味着测试中的其余操作不会运行。然而,我会尽量不这样做——除非你真正理解为什么你想要这样做,因为你可以在不知道为什么通过测试的情况下开始通过测试(也就是说,不断言任何事情)


我希望这有助于

如果您希望尽早结束测试而不失败,只需使用return即可

[Test]
public void MyTest() {

    //Do some stuff
    if(!shouldContinue) {

        return;

    }

}
我经常这样做,因为某些条件可能需要额外的断言,而其他条件可能不需要。抛出异常将使测试失败。这不会使它失败


编辑:我刚刚注意到另一个回复者在他们的答案末尾提到了这一点。所以别理我:)

你说的中止是什么意思?你的意思是停止它当前正在做的事情并报告失败/通过吗?是的!停止测试用例,就像VisualStudio在无法继续测试用例时通常所做的那样。那么您是否可以简单地抛出一个异常?这将导致测试失败并中止测试用例我不熟悉抛出异常。如何编写一个?@jamiepock我可以使用这个:
抛出新的System.ArgumentException(“序列号不匹配”)