最近,我在 TeamCity 构建中运行 MSpec 测试时遇到了问题。这发生在两个不同(不相关)的项目上。一切都会在本地正常工作,但是当 TeamCity 构建运行时,我会得到某些 MSpec 类型的 MissingMethodExceptions。
然后构建继续运行我的所有 5 个(到目前为止)规范,所有这些都通过. 但是构建失败了,因为该步骤以错误结束。
如果它有任何区别,我的目标是 .NET 4.5 并mspec-clr4.exe
用于在 TeamCity 服务器上运行测试。我使用 MSpec 0.5.9 并使用 TeamCity 的 NuGet 安装程序直接从 NuGet 中提取它。我们在 TeamCity 7.1
这是我的构建步骤配置
这是日志文件输出的一部分:
[04:27:12]第 3/4 步:单元测试和代码覆盖率 (MSpec) (47s) [04:27:12]开始:C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe #TeamCityImplicit [04:27:12]在目录:C:\BuildAgent\work\13af8c5b6a6273c6 [04:27:22]JetBrains dotCover Console Runner v2.0.425.72。版权所有 (c) 2009-2012 JetBrains sro 保留所有权利。 [04:27:22] [04:27:39][JetBrains dotCover] 报道会议开始 [15/10/2012 04:25:58] [04:27:45]运行规范。 [04:27:47] System.MissingMethodException:没有为此对象定义无参数构造函数。 在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck) 在 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,布尔 skipCheckThis,布尔填充缓存,StackCrawlMark 和 stackMark) 在 System.RuntimeType.CreateInstanceDefaultCtor(布尔 publicOnly,布尔 skipCheckThis,布尔 fillCache,StackCrawlMark 和 stackMark) 在 System.Activator.CreateInstance(类型类型,布尔非公共) 在 System.Activator.CreateInstance(类型类型) 在 Machine.Specifications.Explorers.AssemblyExplorer.CreateContextFrom(类型类型) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在 System.Linq.Enumerable.Any[TSource](IEnumerable`1 源) 在 Machine.Specifications.Runner.Impl.DefaultRunner.StartRun(IDictionary`2 contextMap) 在 Machine.Specifications.Runner.Impl.DefaultRunner.RunAssembly(装配装配) 在 Machine.Specifications.Runner.Impl.AppDomainRunner.AssemblyRunner..ctor(ISpecificationRunListener 侦听器,程序集程序集,RunOptions 选项) [04:27:48] System.MissingMethodException:没有为此对象定义无参数构造函数。 在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck) 在 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,布尔 skipCheckThis,布尔填充缓存,StackCrawlMark 和 stackMark) 在 System.RuntimeType.CreateInstanceDefaultCtor(布尔 publicOnly,布尔 skipCheckThis,布尔 fillCache,StackCrawlMark 和 stackMark) 在 System.Activator.CreateInstance(类型类型,布尔非公共) 在 System.Activator.CreateInstance(类型类型) 在 Machine.Specifications.Explorers.AssemblyExplorer.CreateContextFrom(类型类型) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在 System.Linq.Enumerable.Any[TSource](IEnumerable`1 源) 在 Machine.Specifications.Runner.Impl.DefaultRunner.StartRun(IDictionary`2 contextMap) 在 Machine.Specifications.Runner.Impl.DefaultRunner.RunAssembly(装配装配) 在 Machine.Specifications.Runner.Impl.AppDomainRunner.AssemblyRunner..ctor(ISpecificationRunListener 侦听器,程序集程序集,RunOptions 选项) [04:27:48] System.MissingMethodException:没有为此对象定义无参数构造函数。 在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck) 在 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,布尔 skipCheckThis,布尔填充缓存,StackCrawlMark 和 stackMark) 在 System.RuntimeType.CreateInstanceDefaultCtor(布尔 publicOnly,布尔 skipCheckThis,布尔 fillCache,StackCrawlMark 和 stackMark) 在 System.Activator.CreateInstance(类型类型,布尔非公共) 在 System.Activator.CreateInstance(类型类型) 在 Machine.Specifications.Explorers.AssemblyExplorer.CreateContextFrom(类型类型) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在 System.Linq.Enumerable.Any[TSource](IEnumerable`1 源) 在 Machine.Specifications.Runner.Impl.DefaultRunner.StartRun(IDictionary`2 contextMap) 在 Machine.Specifications.Runner.Impl.DefaultRunner.RunAssembly(装配装配) 在 Machine.Specifications.Runner.Impl.AppDomainRunner.AssemblyRunner..ctor(ISpecificationRunListener 侦听器,程序集程序集,RunOptions 选项) [04:27:48] System.MissingMethodException:没有为此对象定义无参数构造函数。 在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck) 在 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,布尔 skipCheckThis,布尔填充缓存,StackCrawlMark 和 stackMark) 在 System.RuntimeType.CreateInstanceDefaultCtor(布尔 publicOnly,布尔 skipCheckThis,布尔 fillCache,StackCrawlMark 和 stackMark) 在 System.Activator.CreateInstance(类型类型,布尔非公共) 在 System.Activator.CreateInstance(类型类型) 在 Machine.Specifications.Explorers.AssemblyExplorer.CreateContextFrom(类型类型) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在 System.Linq.Enumerable.Any[TSource](IEnumerable`1 源) 在 Machine.Specifications.Runner.Impl.DefaultRunner.StartRun(IDictionary`2 contextMap) 在 Machine.Specifications.Runner.Impl.DefaultRunner.RunAssembly(装配装配) 在 Machine.Specifications.Runner.Impl.AppDomainRunner.AssemblyRunner..ctor(ISpecificationRunListener 侦听器,程序集程序集,RunOptions 选项) [04:27:48] System.MissingMethodException:没有为此对象定义无参数构造函数。 在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck) 在 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,布尔 skipCheckThis,布尔填充缓存,StackCrawlMark 和 stackMark) 在 System.RuntimeType.CreateInstanceDefaultCtor(布尔 publicOnly,布尔 skipCheckThis,布尔 fillCache,StackCrawlMark 和 stackMark) 在 System.Activator.CreateInstance(类型类型,布尔非公共) 在 System.Activator.CreateInstance(类型类型) 在 Machine.Specifications.Explorers.AssemblyExplorer.CreateContextFrom(类型类型) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在 System.Linq.Enumerable.Any[TSource](IEnumerable`1 源) 在 Machine.Specifications.Runner.Impl.DefaultRunner.StartRun(IDictionary`2 contextMap) 在 Machine.Specifications.Runner.Impl.DefaultRunner.RunAssembly(装配装配) 在 Machine.Specifications.Runner.Impl.AppDomainRunner.AssemblyRunner..ctor(ISpecificationRunListener 侦听器,程序集程序集,RunOptions 选项) [04:27:48] System.MissingMethodException:没有为此对象定义无参数构造函数。 在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck) 在 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,布尔 skipCheckThis,布尔填充缓存,StackCrawlMark 和 stackMark) 在 System.RuntimeType.CreateInstanceDefaultCtor(布尔 publicOnly,布尔 skipCheckThis,布尔 fillCache,StackCrawlMark 和 stackMark) 在 System.Activator.CreateInstance(类型类型,布尔非公共) 在 System.Activator.CreateInstance(类型类型) 在 Machine.Specifications.Explorers.AssemblyExplorer.CreateContextFrom(类型类型) 在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() 在 System.Linq.Enumerable.Any[TSource](IEnumerable`1 源) 在 Machine.Specifications.Runner.Impl.DefaultRunner.StartRun(IDictionary`2 contextMap) 在 Machine.Specifications.Runner.Impl.DefaultRunner.RunAssembly(装配装配) 在 Machine.Specifications.Runner.Impl.AppDomainRunner.AssemblyRunner..ctor(ISpecificationRunListener 侦听器,程序集程序集,RunOptions 选项) [04:27:48]Tigra.Graffiti.Specifications 中的运行规范 [04:27:48]Tigra.Graffiti.Specifications (2s) [04:27:50]CalendarFunctions 基于 CSS 的格式,在构建日历日列表项时 > 应该生成预期的 html [04:27:50]CalendarFunctions 基于 CSS 的格式,在为事件日构建日历日列表项时 > 应该生成带有事件日期 css 类的 html [04:27:51]CalendarFunctions 基于 CSS 的格式,当构建带有事件的日历日列表项 > 应该生成带有 hasEvents css 类的 html [04:27:51]CalendarFunctions 基于 CSS 的格式,当构建带有事件的日历日列表项并且是事件日期时 > 应该生成带有事件日期 css 类的 html [04:27:51]CalendarFunctions 基于 CSS 的格式,当构建包含事件和事件的日历日列表项时 > 应该生成带有事件日期 css 类的 html [04:27:51]运行失败:System.Runtime.Serialization.SerializationException:类型未解析成员'Machine.Specifications.Runner.RunOptions,Machine.Specifications,版本=0.5.9.0,Culture=neutral,PublicKeyToken=null '。 [04:27:51] 在 System.AppDomain.CreateInstanceAndUnwrap(字符串 assemblyName,String typeName,布尔忽略Case,BindingFlags bindingAttr,Binder binder,Object [] args,CultureInfo 文化,Object [] activationAttributes,证据 securityAttributes) [04:27:51] 在 Machine.Specifications.Runner.Impl.AppDomainRunner.CreateRunnerAndUnloadAppDomain(String runMethod,AppDomain appDomain,Assembly 程序集,Object [] args) [04:27:51] 成员 'Machine.Specifications.Runner.RunOptions,Machine.Specifications, Version=0.5.9.0, Culture=neutral, PublicKeyToken=null'的类型未解析。 [04:27:57][JetBrains dotCover] 覆盖会议结束 [15/10/2012 04:26:16] [04:27:57][JetBrains dotCover] 分析的应用程序以代码“-1”退出