【发布时间】:2011-06-10 12:15:27
【问题描述】:
我想用 NUnit 测试中的文本填充 Forms.Clipboard。
我遇到的第一个问题是剪贴板必须在 STA 模式下使用。我发现the solution (NUnit 2.5.x+) 在方法上设置了 RequiresSTA 属性。
接下来我在调用 Clipboard.SetText() 时得到一个 ExternalException。我发现the solution 使用 Clipboard.SetDataObject(object, bool, int, int) 可以指定 retryTimes 多次尝试设置剪贴板。这个 hacky 解决方案有时有效,这显然不够好(增加 retryTimes 参数当然也会增加成功的机会)。
其他人(例如Peter)已经成功了,所以这可能与我的环境有关:我在面向 .NET 3.5 和 x86 的 Windows 7 64 位下运行 VS2010。 NUnit 版本是 2.5.9。
我被困住了。任何帮助将不胜感激。
【问题讨论】:
-
听起来不像是单元测试。您是否考虑过在单元测试中从 Windows 剪贴板中抽象出来并使用自己的“IClipboard”接口?
-
这是一个环境问题,另一个进程正在弄乱剪贴板。使用 taskmgr.exe 并开始杀死进程,直到找到麻烦制造者。希望那不是你自己的。
-
@agent-j:完全同意。但是在这种情况下,剪贴板是我正在测试的一部分:(
-
@Hans Passant:好主意。在杀死一些应用程序后,它似乎正在工作。我会再做一些测试报告。
标签: c# winforms nunit clipboard sta