首页 > 解决方案 > 当 Assert 语句在不同的方法中时使用 NUnit Multiple Assert

问题描述

我正在NUnit为每个步骤(即Then And我的 UI 测试)使用断言来运行自动 BDD 步骤。

NUnit断言仅限于每种方法。这意味着如果方法中的断言失败,则其他步骤将不会运行。

我正在考虑使用NUnit Multiple Assert,但这需要所有断言都在一起。有任何想法吗?

BDD Steps

Then I am shown results for("foo")
And the page count is(3)

我正在使用LightBDD图书馆https://github.com/LightBDD/LightBDD

// Then Step
private void ThenIAmShownResultsFor(string expectedResults)
{
    Assert.AreEqual(expectedResults, actual);
}

// And Step
private void AndThePageCountIs(int expectedResults)
{
    Assert.AreEqual(expectedResults, actual);
}

标签: c#testingautomationnunitassert

解决方案


这篇文章。依赖于另一个结果的测试应该模拟那些其他测试或方法。每个测试都应该与任何其他测试完全分离。你永远不应该让一个测试依赖于另一个测试的结果。如果一个测试依赖于另一个测试的结果,您需要模拟来自另一个测试的响应。

代码,假设 _foo

// And Step
private void AndThePageCountIs(int expectedResults)
{
   actual = _foo.Setup(x => x.ThenIAmShownResultsFor()).Returns(expectedResults);
   Assert.AreEqual(expectedResults, actual);
}

推荐阅读