使用带有NUnit的CruiseControl.NET,测试偶尔会失败:错误800704a6

如何解决使用带有NUnit的CruiseControl.NET,测试偶尔会失败:错误800704a6

| 我和我的搭档在项目的构建服务器上每晚运行一组测试。我们使用CruiseControl.NET来运行服务器,并且使用WatiN和NUnit编写测试。我们将CruiseControl.NET作为一项服务运行,并且可以与本地系统帐户上的桌面进行交互。每运行几次构建,​​某些测试就会失败,并显示以下错误消息:
Test:   cfarmweb.tests.Views.GeneralRegressionTest.DuplicateUsernameTest  
Type:   Failure  
Message:    SetUp : System.Runtime.InteropServices.COMException : Creating an instance of the COM component with CLSID {0002DF01-0000-0000-C000-000000000046} from the IClassFactory Failed due to the following error: 800704a6. TearDown : System.NullReferenceException : Object reference not set to an instance of an object.


at WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri,IDialogHandler logonDialogHandler,Boolean createInNewProcess)  
at WatiN.Core.IE..ctor(String url)  
at cfarmweb.tests.Navigator.SiteNavigator..ctor(String browserName,Boolean visible) in c:\\ccworkdir\\CFarm\\builddir\\cfarmweb.tests\\Navigator\\SiteNavigator.cs:line 35  
at cfarmweb.tests.Views.GeneralRegressionTest.MakeNavigator() in c:\\ccworkdir\\CFarm\\builddir\\cfarmweb.tests\\Views\\GeneralRegressionTest.cs:line 34  
--TearDown  
at WatiN.Core.browser.OnGetNativeDocument()  
at WatiN.Core.DomContainer.get_NativeDocument()  
at WatiN.Core.Document.ContainsText(String text)  
at cfarmweb.tests.Navigator.SiteNavigator.HasText(String target) in c:\\ccworkdir\\CFarm\\builddir\\cfarmweb.tests\\Navigator\\SiteNavigator.cs:line 213  
at cfarmweb.tests.Navigator.SiteNavigator.SignOut() in c:\\ccworkdir\\CFarm\\builddir\\cfarmweb.tests\\Navigator\\SiteNavigator.cs:line 110  
at cfarmweb.tests.Views.GeneralRegressionTest.disposeNavigator() in c:\\ccworkdir\\CFarm\\builddir\\cfarmweb.tests\\Views\\GeneralRegressionTest.cs:line 123  
构建的成功似乎并不依赖于代码本身的更改,因为我们已经中断了构建或在与测试无关的程序部分更改后修复了构建。 我们都是软件测试领域(以及一般而言的开发领域)的新手,但我们在网上发现的有关此错误的任何信息似乎都不符合我们的情况。我们已经看到了从系统重新启动到Internet Explorer 8的兼容性问题再到JavaScript错误的所有内容,但是我们没有尝试解决任何问题。最困难的部分之一是它不能始终如一地再现。我们如何解决这个问题?     

解决方法

        本 我有完全相同的问题,令人惊讶的是……我想我有解决方案。它似乎是一个线程问题。测试顶部的
[RequiresSTA]
标记旨在通过将标记ѭ2placing隐式地放置在每个方法上,从而将每个测试创建为单线程。但是,我倾向于认为没有在
[SetUp]
[TearDown]
方法上调用这些标签,从而导致线程问题。我希望通过将[STAThread]标记显式地放置在每个方法(包括
[SetUp]
[TearDown]
方法)上来解决此问题。我将让您知道任何进一步的更改,但这值得一试。     ,        还有一些与Watin和IE8相关的问题。 在TeamCity上运行Watin 由于以下错误而失败:800704a6尝试从teamcity中的文本文件读取数据时 https://serverfault.com/questions/179156/ie8-script-error-800704a6 据我了解,请确保您的Windows已完全更新,再次进行重新启动只是为了确保并检查问题是否仍然存在。 如果是这样,请尝试不在服务模式下运行ѭ7。 如果仍然不好,请尝试使用Internet选项安全性来确定这是否影响了问题。 高温超导     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?