【问题标题】:Unable to set WinForms clipboard in unit test无法在单元测试中设置 WinForms 剪贴板
【发布时间】: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


【解决方案1】:

回答我自己的问题:

正如 Hans Passant 在 cmets 中所建议的那样,问题在于另一个进程正在干扰。邪恶进程好像是谷歌浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多