最近、TeamCity ビルドで MSpec テストを実行する際に問題が発生しています。これは、2 つの異なる (関連のない) プロジェクトで発生しています。ローカルではすべて正常に動作しますが、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) (47 秒) [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 コンソール ランナー v2.0.425.72。Copyright (c) 2009-2012 JetBrains sro All rights reserved. [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 型、ブール publicOnly、ブール noCheck、ブール & canBeCached、RuntimeMethodHandleInternal & ctor、ブール & bNeedSecurityCheck) で System.RuntimeType.CreateInstanceSlow (ブール publicOnly、ブール skipCheckThis、ブール fillCache、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 型、ブール publicOnly、ブール noCheck、ブール & canBeCached、RuntimeMethodHandleInternal & ctor、ブール & bNeedSecurityCheck) で System.RuntimeType.CreateInstanceSlow (ブール publicOnly、ブール skipCheckThis、ブール fillCache、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 型、ブール publicOnly、ブール noCheck、ブール & canBeCached、RuntimeMethodHandleInternal & ctor、ブール & bNeedSecurityCheck) で System.RuntimeType.CreateInstanceSlow (ブール publicOnly、ブール skipCheckThis、ブール fillCache、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 型、ブール publicOnly、ブール noCheck、ブール & canBeCached、RuntimeMethodHandleInternal & ctor、ブール & bNeedSecurityCheck) で System.RuntimeType.CreateInstanceSlow (ブール publicOnly、ブール skipCheckThis、ブール fillCache、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 型、ブール publicOnly、ブール noCheck、ブール & canBeCached、RuntimeMethodHandleInternal & ctor、ブール & bNeedSecurityCheck) で System.RuntimeType.CreateInstanceSlow (ブール publicOnly、ブール skipCheckThis、ブール fillCache、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 型、ブール publicOnly、ブール noCheck、ブール & canBeCached、RuntimeMethodHandleInternal & ctor、ブール & bNeedSecurityCheck) で System.RuntimeType.CreateInstanceSlow (ブール publicOnly、ブール skipCheckThis、ブール fillCache、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, Version=0.5.9.0, Culture=neutral, PublicKeyToken=null の型が解決されていません'。 [04:27:51] System.AppDomain.CreateInstanceAndUnwrap (文字列 assemblyName、文字列 typeName、ブール値の ignoreCase、BindingFlags bindingAttr、バインダー バインダー、オブジェクト [] args、CultureInfo カルチャ、オブジェクト [] activationAttributes、証拠 securityAttributes) で [04:27:51] Machine.Specifications.Runner.Impl.AppDomainRunner.CreateRunnerAndUnloadAppDomain (文字列 runMethod、AppDomain appDomain、アセンブリ アセンブリ、オブジェクト [] 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」で終了しました