c# - 当 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);
}
解决方案
见这篇文章。依赖于另一个结果的测试应该模拟那些其他测试或方法。每个测试都应该与任何其他测试完全分离。你永远不应该让一个测试依赖于另一个测试的结果。如果一个测试依赖于另一个测试的结果,您需要模拟来自另一个测试的响应。
代码,假设 _foo
// And Step
private void AndThePageCountIs(int expectedResults)
{
actual = _foo.Setup(x => x.ThenIAmShownResultsFor()).Returns(expectedResults);
Assert.AreEqual(expectedResults, actual);
}
推荐阅读
- c++ - 函数模板中的参数包可以后跟另一个取决于返回类型的参数吗?
- javascript - 新的“随机”数,不同于之前的“随机”数,范围整数 0—5
- c++ - 如何检查 std::filesystem::copy 是否结束?
- mysql - 从表中获取最新日期的最新值
- kotlin - 在 for 循环中等待所有凌空请求
- multithreading - 在主线程中调用委托
- python - 在 Python 中为我的 Slack 机器人引发 KeyError
- html - 应用行间距(row-gap)网格容器高度后的CSS Grid小于网格本身
- python - 选择类别时,同时显示类别的元素和所有子类别的元素
- javascript - 减少来自 YouTube 的网络请求