gpt4 book ai didi

testing - 在 NUnit [TearDown] 中,如何确定测试是否单独运行?

转载 作者:行者123 更新时间:2023-11-28 21:17:43 26 4
gpt4 key购买 nike

所以,在 TearDown , 我有 info about the test outcome和测试结果消息,但我想具体处理测试是单独运行(测试 session 中的单个测试)还是在一整套测试中启动(例如“运行所有测试/来自解决方案的所有测试").

目标是检测开发人员是单独启动测试(从 Visual Studio 中手动启动)还是使用持续集成系统启动测试。

这是我目前所拥有的:

/// <summary>
/// A helper function for resolving problems when string comparison fails.
/// </summary>
/// <remarks>
/// Intended to be used to analyze the detected differences.
/// </remarks>
[TearDown]
public void CompareNonMatchingStringsOnFailure() {
if (TestContext.CurrentContext.Result.Outcome.Status == TestStatus.Failed) {
string outputMessage = TestContext.CurrentContext.Result.Message;
if (outputMessage.StartsWith("Expected string to be ")) {

// do extended comparison
// This should only run on single runs, which were initiated manually from visual studio
//...
}
}
}

如何在 TearDown 方法中获取有关测试运行/ session 的信息?

最佳答案

您不能在拆解代码中执行此操作,因为 (1) TearDown 仍然是测试的一部分,并且 (2) 测试不应该知道任何关于谁运行它们、为什么运行等的信息。执行环境知道测试,但测试不知道执行环境。事实上,NUnit 为了确保在每个环境中工作相同,NUnit 付出了很多努力。虽然有一些方法可以欺骗 NUnit,但它们通常都是糟糕的想法并且依赖于版本。

这是您可以做的...

  1. 创建一个从您的夹具继承的夹具。
  2. 将您想要的逻辑放入新的夹具 TearDown 方法中。
  3. 将新夹具标记为[Explicit]
  4. 不要向新装置添加任何类别。

由于 (3),当您运行所有测试时,新装置将不会作为 CI 的一部分运行,甚至不会从 IDE 运行。

它只能显式运行。由于它没有类别,这意味着它只能按名称运行...即通过选择整个夹具或单个测试。

这不是您要求的完全。如果运行整个夹具,您将获得所有继承测试方法的完整比较。但是,它可能足以满足您要完成的任务。

关于testing - 在 NUnit [TearDown] 中,如何确定测试是否单独运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55412334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com