5

最近、TeamCity ビルドで MSpec テストを実行する際に問題が発生しています。これは、2 つの異なる (関連のない) プロジェクトで発生しています。ローカルではすべて正常に動作しますが、TeamCity ビルドを実行すると、一部の MSpec タイプで MissingMethodExceptions が発生します。

その後、ビルドは 5 つすべて (これまでのところ) の仕様を実行し、そのすべてが に合格します。ただし、ステップがエラーで終了するため、ビルドは失敗します。

違いがある場合は、.NET 4.5 をターゲットmspec-clr4.exeにして、TeamCity サーバーでテストを実行するために使用しています。私は MSpec 0.5.9 を使用し、TeamCity の NuGet インストーラーを使用して NuGet から直接プルします。TeamCity 7.1 を使用しています

これが私のビルドステップの構成です MSpec テストランナーの TeamCity ビルドステップ構成

ログ ファイル出力の一部を次に示します。

[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」で終了しました
4

0 に答える 0