我正在使用 Specflow 和 Coded UI 测试来检查 WPF 应用程序中的输入验证是否按预期工作。我有如下功能:
@InputValidation
Feature: Foo
Scenario Outline: Bar
Given I am in the input screen
When <input> is entered into text box
Then the text box has the status <status>
Examples:
| input | status |
| "" | invalid |
| "0" | invalid |
| "42" | valid |
只要我在每个场景块(AfterScenarioBlock(“InputValidation”))之后重新启动应用程序,它就可以正常工作。不幸的是,这在每晚构建期间需要大量时间,因为我必须启动整个应用程序,进行输入,检查状态并关闭表中每个数据集的应用程序。
我的问题是我得到一个异常(“编码的 UI 测试在 COM 的单线程单元 (STA) 模式下运行。在这种模式下,所有播放调用都应该只从 TestMethod 线程发生,并且 UITestControl 不应该在 TestMethods 之间共享.") 当我尝试在不重新启动的情况下使用示例时。
原因似乎是 Specflow 为示例表中的每一行生成了一个新的 TestMethod。这些方法具有所有不同的线程,因此无法访问相同的 UI 元素。
我对此不确定,因此想询问是否有任何其他原因导致此异常,以及是否可以在不重新启动的情况下使用示例或在不同的测试方法之间共享 UI 元素。