gpt4 book ai didi

c# - 我必须做什么才能使断言不再阻止自动化测试?

转载 作者:太空狗 更新时间:2023-10-30 01:26:10 25 4
gpt4 key购买 nike

我们在几个虚拟机上使用 hudson/jenkins 对我们的 C# 项目运行自动化 NUnit 测试,这些虚拟机大多在某些服务器上无人值守地运行。测试涉及启动几个交换数据的进程,其中之一是 NUnit 本身,其他由单元测试创​​建。

有时,其中一位开发人员会 checkin 触发断言 (Debug.Assert()) 的内容。然后弹出一个消息框,询问用户要做什么。通常这些发生在单元测试创​​建的“外部”进程之一中。它们将阻止该进程,而其他进程则放弃,因为它们无法通信。但是,由于系统的性质,下一个测试也将全部失败,只要那个进程被阻止等待有人点击那个消息框.

有人告诉我,您可以更改 .NET 程序的设置,这样断言就不会弹出消息框。理想情况下,该过程只会向 stdout 或 stderr 写入一些内容,供 Jenkins 记录。

那么我必须做什么才能关闭那些交互式断言对话框?

最佳答案

您需要实现在失败时不会弹出对话框的 System.Diagnostics.TraceListener(即您可以向单元测试框架报告错误)并使用 Listeners.Clear/Add 添加此监听器而不是默认监听器

public class MyListenerThatDoesNotShowDialogOnFail: System.Diagnostics.TraceListener
{....
public override void Fail(string message, string detailMessage)
{// do soemthing UnitTest friendly here
}

}

System.Diagnostics.Debug.Listeners.Clear();
System.Diagnostics.Debug.Listeners.Add(new MyListenerThatDoesNotShowDialogOnFail());

此代码应该在您的单元测试设置部分。这样,常规调试构建将显示断言对话框,但在运行单元测试时,它将为测试做一些合理的事情(如 Assert.Fail)。请注意,您应该考虑在测试的拆卸方法中恢复原始监听器。

关于c# - 我必须做什么才能使断言不再阻止自动化测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504183/

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