无法在单元测试中设置WinForms剪贴板

4
我想从一个 NUnit 测试中将文本填充到 Forms.Clipboard 中。
我遇到的第一个问题是,必须在 STA 模式下使用 Clipboard。我找到了 解决方案(NUnit 2.5.x+),可以在方法上设置 RequiresSTA 属性。
接下来,当调用 Clipboard.SetText() 时,我会遇到 ExternalException。我找到了 解决方案,可以使用 Clipboard.SetDataObject(object, bool, int, int) 方法,在其中可以指定 retryTimes 来尝试几次设置剪贴板。这个 hacky 的解决方案有时候有效,但显然不够好(增加 retryTimes 参数当然也会增加成功的机会)。
其他人(例如 Peter)已经成功地做到了这一点,所以也许与我的环境有关:我在 Windows 7 64 位操作系统下运行 VS2010,目标为 .NET 3.5 和 x86。NUnit 版本为 2.5.9。
我被卡住了。任何帮助都将不胜感激。

听起来不像是单元测试。您是否考虑在单元测试中将Windows剪贴板抽象化,并使用自己的“IClipboard”接口? - agent-j
1
这是一个环境问题,另一个进程正在干扰剪贴板。使用taskmgr.exe并开始终止进程,直到找到问题制造者。希望那个不是你自己的进程。 - Hans Passant
@agent-j: 完全同意。但在这种情况下,剪贴板是我正在测试的一部分 :( - Torbjörn Kalin
@Hans Passant:思路不错。关闭了几个应用程序后,似乎它正在工作。我会进行更多测试并报告结果。 - Torbjörn Kalin
1个回答

0

回答自己的问题:

正如Hans Passant在评论中建议的那样,问题是另一个进程正在干扰。这个恶意进程似乎是Google Chrome。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接