我有CruiseControl.NET (v1.6.7981.1)设置在Windows7Pro专用的构建机器上。我要构建一个VS2012项目设置,然后使用Gallio.Echo.exe运行MBUnit测试。我的问题是,当CC.NET运行这些测试时,它会在其中几个测试上失败,但是当我在包含测试的完全相同的dll上从命令行运行与CC任务中指定的参数完全相同的程序时,每个测试都会通过。我似乎搞不清到底是怎么回事。有人能解释为什么某些测试在CruiseControl运行时可能会失败,而当我运行它们时却会通过吗?我尝试在运行CruiseControl服务的相同帐户下运行它们,因此我不认为这是权限问题。我甚至试着一次又一次地把它关掉(机器)。
CruiseControl正在以具有管理权限的登录窗口服务的形式运行。我们的VS项目是一个.NET 4.0桌面应用程序,但我们已经包含了一个以前为.NET 3.5构建的遗留项目,升级到.NET 4.0。这个项目引用了Microsoft.Ink程序集(v6.1.0.0),我已经确认这是在构建机器上的GAC中。实际上,失败的测试正在测试使用此程序集的应用程序的一部分。我们计划在稍后取代这个遗留项目,但现在必须接受它。
下面是CruiseControl中测试报告中的错误:
Microsoft.Ink.InkOverlayClass.set_Enabled(Boolean : Microsoft.Ink.InkPicture.set_InkEnabled(Boolean值ErrorCode:-2147418113 )在.vb:line 1201.
下面是(VB.NET)代码失败的地方
Dim inkPictureObject As New Microsoft.Ink.InkPicture()
...
inkPictureObject.InkEnabled = False
inkPictureObject.Ink = New Ink()
inkPictureObject.InkEnabled = True '<-- fails here除了这个(COMException occurred: ErrorCode = -2147287036)和这个(Only while running on VS 2010: COMException: Catastrophic Failure: Error Code: -2147418113)之外,我似乎找不到任何关于错误的信息,因为我没有分配资源,所以这两个信息都没有帮助,在运行VS2012程序时,我也没有遇到任何问题。真正的问题是(如前所述),当我从命令提示符(作为运行CruiseControl服务所用的同一个用户登录)使用与CruiseControl配置中指定的参数相同的参数运行它们时,测试工作得很好。
Gallio.Echo.exe /rnf:test-report /rt:Xml-内联/v:Quiet "C:\My project\testAssembly.dll“
任何帮助都将不胜感激。
发布于 2012-11-21 20:39:36
尝试从命令提示符中运行ccnet,看看测试是否失败或通过。我认为你只需要执行ccservice.exe。
如果ccnet作为windows服务运行,我可以理解这可能失败的原因。windows服务不能*创建新窗口。
此MicrosoftDocumentshttp://msdn.microsoft.com/en-us/library/aa514604.aspx声明InkPicture是一个c#包装器,它创建一个窗口来显示图片并与图片进行交互。
The run time user interface for this control is a window with an opaque background (single color, picture background, or both) that contains opaque ink.
*可以将作为系统运行的windows服务设置为允许创建interaction with the desktop。虽然这种支持显然是分阶段进行的,但却是由微软提供的。
https://stackoverflow.com/questions/13487784
复制相似问题