消息:初始化方法MyProject.Tests.MainWindow.Initialize抛出异常。 System.Runtime.InteropServices.COMException:
System.Runtime.InteropServices.COMException:错误HRESULT E_FAIL已从调用COM组件返回..堆栈跟踪:
- System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.get_RegisterAsDropTarget()
- System.Windows.Forms.WebBrowser.set_AllowWebBrowserDrop(布尔值)
- MainWindow.Designer.cs中的MyProject.MainWindow.InitializeComponent():第819行
- MainWindow.cs中的MyProject.MainWindow.InitWindow():第29行
- MainWindow.cs中的MyProject.MainWindow..ctor():第19行
- MainWindow.cs中的MyProject.Tests.MainWindow.Initialize():第21行
如果我关闭Visual Studio,打开它,然后运行我的测试,它们就会通过。如果我再次运行它们,即使没有执行任何 else,它们都会因上述错误而失败,并继续执行此操作,直到重新启动VS.我的初始化方法(当前)只是创建了我的测试使用的MainWindow
类的新实例。
如果我调试测试而不是运行它们,测试通过,然后在运行时传递一次,就像我重新启动VS一样。
我在表单中有一个WebBrowser
控件。如果我将其删除,则上述错误消失。当前对违规控件做任何事情的唯一代码是由设计者自动生成的。
注意到调用堆栈包含set_AllowWebBrowserDrop
(这是我在设计器中禁用的属性),我为WebBrowser
特有的属性尝试了许多不同的属性值组合控制。我不记得我尝试过的所有组合,但都没有解决问题,他们只是略微改变了堆栈跟踪。
搜索此问题并未产生许多有用的结果。我发现的大多数解决方案都是改变设计器中的一些WebBrowser
设置,或者在实时运行程序中处理网页导航而不是单元测试。
这个问题使得使用TDD变得非常困难,我试图强迫自己参与这个项目,以便我可以在将来习惯更多的重大项目。
如何使用WebBrowser
控件解决此问题,以便我可以再次成功运行测试?