【发布时间】:2015-11-13 02:20:16
【问题描述】:
我正在使用 NUnit 测试调试 DLL,每次测试运行都会出现大量调试断言,这非常烦人。
所以我编写了一个轮询新调试断言的工具。该工具每 x 毫秒迭代一次所有窗口,并检查标题是否是可能的调试断言窗口标题集合之一。
在伪代码中是这样的:
void main()
{
var thread = new Thread(ThreadMethod);
thread.Start();
}
private void ThreadMethod()
{
while(true)
{
foreach(var title in possibleWindowTitles)
{
IntPtr windowHandle = FindWindowHandle(title);
if(windowHandle != IntPtr.Zero)
{
SetToForeground(windowHandle);
SendKeys.SendWait("%I);
}
}
}
}
代码行SendKeys.SendWait("%I") 将ALT + I 的组合键发送到窗口,这是“继续”按钮的组合键。
我的问题是:
有更好的选择吗?类似:
- 新窗口出现时的事件
- 一种更好的关闭窗口的方法(
User32.dll中的CloseWindow方法对我不起作用——没有异常,但没有任何反应) -
SetToForeGround()解决方法的更好解决方案 - 最好的方法是抑制断言——这可能吗?
我的方法可行,但我认为我的解决方案很容易出错。所以我知道有人有个好主意
【问题讨论】:
-
我将发布一个示例作为答案。
标签: c# debugging nunit assertion