所以我对cc.net很新,但到目前为止还是喜欢它。我有SVN获得最新的MSBuild建筑,但是当涉及到运行我的单元测试时,kablooey。
我尝试了修复GAC中修复引用的修复程序,但没有修复任何内容。我甚至卸载/重新安装了NUnit,但仍然没有运气。此外,我的测试最初是参考NUNit 2.46,但现在我引用了我安装的相同版本2.5.2。我正在运行CruiseControl.NET 1.4.4.83。
目前我在我的开发机器上运行cc.net,这是安装了.NET 2.0 SP1和3.5 SP1的WinXP Pro SP3。我没有使用VS.NET进行构建,但只是为了FYI VS.NET 2005和2008 Professional Edition安装在机器上。
nunit-console.exe从命令行运行正常,那是什么?
这是我的配置文件:
<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<project>
<name>STAR Trunk</name>
<triggers>
<intervalTrigger name="continuous" seconds="450" buildCondition="ForceBuild" initialSeconds="120"/>
</triggers>
<sourcecontrol type="multi">
<sourceControls>
<svn>
<trunkUrl>svn://myServerPath1</trunkUrl>
<workingDirectory>c:\MyPath1</workingDirectory>
<username>username</username>
<password>password</password>
</svn>
<svn>
<trunkUrl>svn://myServerPath2</trunkUrl>
<workingDirectory>c:\MyPath2</workingDirectory>
<username>username</username>
<password>password</password>
</svn>
</sourceControls>
</sourcecontrol>
<tasks>
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
<workingDirectory>c:\MyPath</workingDirectory>
<projectFile>c:\MyPath\solution.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Clean;Rebuild</targets>
<timeout>1200</timeout>
</msbuild>
<nunit>
<path>C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe</path>
<assemblies>
<assembly>c:\MyTestsPath\bin\Assembly1.dll</assembly>
<assembly>c:\MyTestsPath\bin\Assembly2.dll</assembly>
<assembly>c:\MyTestsPath\bin\Assemblyn.dll</assembly>
<assembly>c:\MyTestsPath\bin\nunit.framework.dll</assembly>
</assemblies>
</nunit>
</tasks>
</project>
</cruisecontrol>
cc.net服务器日志提供了:
2009-11-04 11:47:53,841 [STAR Trunk:DEBUG] Running unit tests: C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe /xml="C:\Program Files\CruiseControl.NET\server\STAR Trunk\Artifacts\nunit-results.xml" /nologo D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Acuity.Diagnostics.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Acuity.UnitTests.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\AjaxControlToolkit.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\AutoSproc.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Framework.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Interop.HDSECOMPRESSION.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\MetaBuilders.WebControls.ConfirmedButton.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\MetaBuilders.WebControls.ExpandingPanel.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\nunit.framework.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Star4.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\StarCore.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\StarReport.Lib.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\WebControls.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\webdev.webhost.dll
2009-11-04 11:47:53,888 [STAR Trunk:DEBUG] Starting process [C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] in working directory [C:\Program Files\CruiseControl.NET\server\STAR Trunk\WorkingDirectory] with arguments [/xml="C:\Program Files\CruiseControl.NET\server\STAR Trunk\Artifacts\nunit-results.xml" /nologo D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Acuity.Diagnostics.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Acuity.UnitTests.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\AjaxControlToolkit.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\AutoSproc.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Framework.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Interop.HDSECOMPRESSION.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\MetaBuilders.WebControls.ConfirmedButton.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\MetaBuilders.WebControls.ExpandingPanel.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\nunit.framework.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\Star4.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\StarCore.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\StarReport.Lib.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\WebControls.dll D:\dev\automatedTrunk\Star\Acuity.UnitTests\bin\webdev.webhost.dll]
2009-11-04 11:47:55,326 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] ProcessModel: Default DomainUsage: Multiple
2009-11-04 11:47:55,373 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] Execution Runtime: net-2.0.50727.3603
2009-11-04 11:47:55,498 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] Unhandled Exception:
2009-11-04 11:47:55,498 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] System.IO.FileLoadException: Could not load file or assembly 'file:///C:/Program Files/NUnit 2.5.2/bin/net-2.0/lib/nunit.core.DLL' or one of its dependencies. Incorrect function. (Exception from HRESULT: 0x80070001)
2009-11-04 11:47:55,498 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] File name: 'file:///C:/Program Files/NUnit 2.5.2/bin/net-2.0/lib/nunit.core.DLL'
2009-11-04 11:47:55,498 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
2009-11-04 11:47:55,498 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
2009-11-04 11:47:55,513 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
2009-11-04 11:47:55,513 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.Reflection.Assembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, StackCrawlMark& stackMark)
2009-11-04 11:47:55,513 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence)
2009-11-04 11:47:55,513 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo)
2009-11-04 11:47:55,513 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.AppDomain.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
2009-11-04 11:47:55,513 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.AppDomain.InternalCreateInstanceFromWithNoSecurity(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
2009-11-04 11:47:55,529 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.AppDomain.InternalCreateInstanceFromWithNoSecurity(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
2009-11-04 11:47:55,529 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at System.Activator.CreateInstanceFrom(AppDomain domain, String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
2009-11-04 11:47:55,529 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at NUnit.Core.DomainInitializer.CreateInstance(AppDomain targetDomain)
2009-11-04 11:47:55,544 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at NUnit.Util.DomainManager.CreateDomain(TestPackage package)
2009-11-04 11:47:55,544 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at NUnit.Util.TestDomain.Load(TestPackage package)
2009-11-04 11:47:55,544 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at NUnit.Util.AggregatingTestRunner.Load(TestPackage package)
2009-11-04 11:47:55,544 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions options)
2009-11-04 11:47:55,544 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe] at NUnit.ConsoleRunner.Runner.Main(String[] args)
2009-11-04 11:47:55,544 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe]
2009-11-04 11:47:55,544 [4088:DEBUG] [STAR Trunk C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe]
2009-11-04 11:47:55,544 [STAR Trunk:INFO] Task execution failed
2009-11-04 11:47:55,544 [STAR Trunk:INFO] Task output: ProcessModel: Default DomainUsage: Multiple
Execution Runtime: net-2.0.50727.3603
Unhandled Exception:
System.IO.FileLoadException: Could not load file or assembly 'file:///C:/Program Files/NUnit 2.5.2/bin/net-2.0/lib/nunit.core.DLL' or one of its dependencies. Incorrect function. (Exception from HRESULT: 0x80070001)
File name: 'file:///C:/Program Files/NUnit 2.5.2/bin/net-2.0/lib/nunit.core.DLL'
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence)
at System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo)
at System.AppDomain.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
at System.AppDomain.InternalCreateInstanceFromWithNoSecurity(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
at System.AppDomain.InternalCreateInstanceFromWithNoSecurity(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
at System.Activator.CreateInstanceFrom(AppDomain domain, String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
at NUnit.Core.DomainInitializer.CreateInstance(AppDomain targetDomain)
at NUnit.Util.DomainManager.CreateDomain(TestPackage package)
at NUnit.Util.TestDomain.Load(TestPackage package)
at NUnit.Util.AggregatingTestRunner.Load(TestPackage package)
at NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions options)
at NUnit.ConsoleRunner.Runner.Main(String[] args)
2009-11-04 11:47:55,544 [STAR Trunk:WARN] NUnit test output file C:\Program Files\CruiseControl.NET\server\STAR Trunk\Artifacts\nunit-results.xml was not created
2009-11-04 11:47:56,263 [STAR Trunk:DEBUG] Supplied output is not valid xml. Writing as CDATA
2009-11-04 11:47:56,263 [STAR Trunk:DEBUG] Output: ProcessModel: Default DomainUsage: Multiple
Execution Runtime: net-2.0.50727.3603
Unhandled Exception:
System.IO.FileLoadException: Could not load file or assembly 'file:///C:/Program Files/NUnit 2.5.2/bin/net-2.0/lib/nunit.core.DLL' or one of its dependencies. Incorrect function. (Exception from HRESULT: 0x80070001)
File name: 'file:///C:/Program Files/NUnit 2.5.2/bin/net-2.0/lib/nunit.core.DLL'
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence)
at System.Activator.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo)
at System.AppDomain.CreateInstanceFrom(String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
at System.AppDomain.InternalCreateInstanceFromWithNoSecurity(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
at System.AppDomain.InternalCreateInstanceFromWithNoSecurity(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
at System.Activator.CreateInstanceFrom(AppDomain domain, String assemblyFile, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityAttributes)
at NUnit.Core.DomainInitializer.CreateInstance(AppDomain targetDomain)
at NUnit.Util.DomainManager.CreateDomain(TestPackage package)
at NUnit.Util.TestDomain.Load(TestPackage package)
at NUnit.Util.AggregatingTestRunner.Load(TestPackage package)
at NUnit.ConsoleRunner.ConsoleUi.Execute(ConsoleOptions options)
at NUnit.ConsoleRunner.Runner.Main(String[] args)
2009-11-04 11:47:56,263 [STAR Trunk:DEBUG] Exception: System.Xml.XmlException: An error occurred while parsing EntityName. Line 6, position 146.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, Int32 lineNo, Int32 linePos)
at System.Xml.XmlTextReaderImpl.HandleEntityReference(Boolean isInAttributeValue, EntityExpandType expandType, Int32& charRefEndPos)
at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
at System.Xml.XmlTextReaderImpl.ReadValueChunk(Char[] buffer, Int32 index, Int32 count)
at System.Xml.XmlWriter.WriteNode(XmlReader reader, Boolean defattr)
at ThoughtWorks.CruiseControl.Core.Util.XmlFragmentWriter.WriteNode(XmlReader reader, Boolean defattr)
at ThoughtWorks.CruiseControl.Core.Util.XmlFragmentWriter.WriteNode(String xml)
2009-11-04 11:47:56,263 [STAR Trunk:INFO] Integration complete: Failure - 11/4/2009 11:47:55 AM
在mfeingold发布了关于下面的融合日志之后,这是我得到的:
*** Assembly Binder Log Entry (11/7/2009 @ 10:26:46 PM) ***
The operation failed.
Bind result: hr = 0x80070001. Incorrect function.
Assembly manager loaded from: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
Running under executable C:\Program Files\NUnit 2.4.6\bin\nunit-console.exe
--- A detailed error log follows.
=== Pre-bind state information ===
LOG: User = NT AUTHORITY\SYSTEM
LOG: Where-ref bind. Location = C:/Program Files/NUnit 2.4.6/bin/nunit.core.DLL
LOG: Appbase = file:///D:/dev/automatedTrunk/Star/Acuity.UnitTests/bin
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = C:\WINDOWS\TEMP\nunit20\ShadowCopyCache\2272_633932296067629930
LOG: AppName = Tests
Calling assembly : (Unknown).
===
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: Download of application configuration file was attempted from file:///D:/dev/automatedTrunk/Star/Acuity.UnitTests/bin/Acuity.Diagnostics.dll.config.
答案 0 :(得分:1)
此错误并不一定意味着问题出在NUnitCore程序集中。它可能是无法访问其中一个所需的程序集。尝试打开Fusion日志 - 运行Fusion日志查看器。它将生成的日志将向您显示有关错误的详细信息。
要运行融合日志查看器,请从Visual Studio打开控制台窗口 - &gt;工具菜单并键入实用程序名称:fuslogvw
答案 1 :(得分:1)
问题:您希望通过此配置实现什么目标:
<nunit>
<path>C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit-console.exe</path>
<assemblies>
<assembly>c:\MyTestsPath\bin\Assembly1.dll</assembly>
<assembly>c:\MyTestsPath\bin\Assembly2.dll</assembly>
<assembly>c:\MyTestsPath\bin\Assemblyn.dll</assembly>
<assembly>c:\MyTestsPath\bin\nunit.framework.dll</assembly>
</assemblies>
</nunit>
您是否尝试进行单元测试nunit.framework.dll
?只是猜测,但这不会导致文件访问问题吗?
无论如何,这会带来更多问题:
nunit.framework.dll
位于编译输出文件夹中?nunit.framework.dll
引用指向何处?这么多问题虽然这应该是你原来问题的答案。
这就是我想要的:
nunit.framework.dll
程序集节点C:\Program Files\NUnit 2.5.2\bin\net-2.0\nunit.framework.dll
答案 2 :(得分:1)
我从Fusion日志中看到NUnit似乎启用了ShadowCopy。在过去,我遇到了这个问题。似乎CruiseControl任务不允许将其关闭,因此您可能必须直接调用命令行工具才能执行此操作。