問題タブ [pex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio-2010 - プロジェクトからモグラを削除するにはどうすればよいですか? (モル 0.94.51023.0 / VS2010 SP1)
問題
ほくろを使用できないだけでなく、この投稿を参照してください。ほくろを取り除くこともできません (私の裏庭のように)。[私にとって]明らかでない[ない]何かが欠けていると確信しています。この問題を抱えているのは私だけではありません。
症状
ほくろ構成ファイルを削除した後(プロジェクトディレクトリにあると思いますが、名前を覚えていません)、mscorlibのほくろ/動作への参照を削除すると、再構築され、参照が追加されます。MolesAssemblies ディレクトリも削除しましたが、以下のリンクにはバグが修正されたと書かれています。
その他のリンク
MolesAssemblies ディレクトリの削除に関する古いリファレンスを見つけました(私が試しました) が、それはずっと前に修正されました。
自宅でほくろを取り除くための詳細な提案も見つけましたが、どちらもうまくいきませんでした;)
visual-studio-2010 - 特定のマシンでPexを実行しているときに、インターフェイスが登録されていません(0x80040155)
Pex0.94.0.0リリースVisualStudio10.0.40219.1バグレポート
再現方法:
- クラスライブラリプロジェクトを開く
- 空のメソッドを作成する
- 右クリック->Pexの実行
別のマシンで問題なく実行しています(Officeでは、VS2010 Utimate)
しかし、自宅のコンピューターでこの例外が発生しました(VS2010 Professtional)
例外の詳細:System.InvalidCastException:タイプ'System.__ComObject'のCOMオブジェクトをインターフェイスタイプ'EnvDTE.DTE'にキャストできません。次のエラーが原因で、IID'{04A72314-32E9-48E2-9B87-A63603454F3E}')のインターフェイスのCOMコンポーネントに対するQueryInterface呼び出しが失敗したため、この操作は失敗しました。インターフェイスが登録されていません。(HRESULTからの例外:0x80040155)Microsoft.Pex.VsPackage.VsServiceProviderHelper.GetService [T](IServiceProvider serviceProvider)at Microsoft.Pex.VsPackage.Helpers.ProjectHelper.SaveAllFiles(IServiceProvider serviceProvider)at Microsoft.Pex.VsPackage.Actions.ActionComponent .SaveAll()at Microsoft.Pex.VsPackage.Actions.ExplorationActionBase.InternalExecute()at Microsoft.Pex.VsPackage.Actions.ActionComponent.Execute(Object target)
Microsoft.Pex.VsPackage.Controls.ErrorReport.CreateReport(Exception ex)のMicrosoft.Pex.VsPackage.Controls.ErrorReport。<>c_DisplayClass4.bの現在のスタックトレース_3()at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method、Object target、Object [] arguments、SignatureStruct&sig、MethodAttributes methodAttributes、RuntimeType typeOwner)at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method、Object target、Object [] arguments、Signature sig 、MethodAttributes methodAttributes、RuntimeType typeOwner)at System.Reflection.RuntimeMethodInfo.Invoke(Object obj、BindingFlags invokeAttr、バインダーバインダー、Object []パラメーター、CultureInfoカルチャー、Boolean skipVisibilityChecks)at System.Delegate.DynamicInvokeImpl(Object [] args)at Microsoft .Pex.VsPackage.Helpers.UIThreadInvoker.SafeMethodInvoker.Invoke()at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method、Object target、Object [] arguments、SignatureStruct&sig、MethodAttributes methodAttributes、RuntimeType typeOwner)at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method、Object target、Object [] arguments、Signature sig、MethodAttributes methodAttributes、RuntimeType typeOwner)at System.Reflection.RuntimeMethodInfo.Invoke(Object obj、BindingFlags invokeAttr、Binderバインダー、Object []パラメーター、CultureInfoカルチャー、ブールskipVisibilityChecks)at System.Delegate.DynamicInvokeImpl(Object [] args)at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)at System.Threading.ExecutionContext.runTryCode(Object userData)at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code、CleanupCode backoutCode、Object userData)atSystem。System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態、ブールignoreSyncCtx)でのThreading.ExecutionContext.RunInternal(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック) 、オブジェクトの状態)at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)at System.Windows.Forms.Control.InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms .Control.ControlNativeWindow.OnMessage(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態、ブールignoreSyncCtx)でのExecutionContext.RunInternal(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)at System.Windows.Forms.Control.InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control .ControlNativeWindow.OnMessage(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態、ブールignoreSyncCtx)でのExecutionContext.RunInternal(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)at System.Windows.Forms.Control.InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control .ControlNativeWindow.OnMessage(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)RunInternal(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)at System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態、ブールignoreSyncCtx)at System.Threading.ExecutionContext.Run(ExecutionContext実行コンテキスト、ContextCallbackコールバック、オブジェクト状態) System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)at System.Windows.Forms.Control.InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow .OnMessage(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)RunInternal(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)at System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態、ブールignoreSyncCtx)at System.Threading.ExecutionContext.Run(ExecutionContext実行コンテキスト、ContextCallbackコールバック、オブジェクト状態) System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)at System.Windows.Forms.Control.InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow .OnMessage(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)IntPtr lparam)IntPtr lparam)System.Windows.Forms.ControlのSystem.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)のSystem.Threading.ExecutionContext.Run(ExecutionContext executeContext、ContextCallbackコールバック、オブジェクト状態、ブールignoreSyncCtx)のオブジェクト状態) .InvokeMarshaledCallback(ThreadMethodEntry tme)at System.Windows.Forms.Control.InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)at System .Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)System.Windows.Forms.ControlのSystem.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)のSystem.Threading.ExecutionContext.Run(ExecutionContext executeContext、ContextCallbackコールバック、オブジェクト状態、ブールignoreSyncCtx)のオブジェクト状態) .InvokeMarshaledCallback(ThreadMethodEntry tme)at System.Windows.Forms.Control.InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)at System .Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)のSystem.Windows.Forms.ControlのSystem.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)のContextCallbackコールバック、オブジェクト状態、ブール無視同期Ctx)。 InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)のSystem.Windows.Forms.ControlのSystem.Threading.ExecutionContext.Run(ExecutionContextexecutionContext、ContextCallbackコールバック、オブジェクト状態)のContextCallbackコールバック、オブジェクト状態、ブール無視同期Ctx)。 InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)System.Windows.Forms.Control.InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)atSystem。 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)のWindows.Forms.Control.ControlNativeWindow.WndProc(Message&m)System.Windows.Forms.Control.InvokeMarshaledCallbacks()at System.Windows.Forms.Control.WndProc(Message&m)at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)atSystem。 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)のWindows.Forms.Control.ControlNativeWindow.WndProc(Message&m)IntPtr wparam、IntPtr lparam)IntPtr wparam、IntPtr lparam)
関連する環境変数:COR_ENABLE_PROFILER = COR_PROFILER = PROCESSOR_ARCHITECTURE = x86
マシンデータ:プロセッサ数= 4
moles - Moles を MsTest で使用すると Moles が「競合」する
Moles と MsTest を使用しているときに、説明可能な (しかし苛立たしい) 動作を見つけました。
次のケースを想像してみてください。
- "Test DLL A" は mscorlib で Moles を使用しています
- "Test DLL B" は mscorlib で Moles を使用しています
コンパイル時間を改善するために、どちらの場合も .moles ファイルを編集して、単一のクラスのモルの生成を要求しています。
これを行うと、プロジェクトは完全に正常にコンパイルされます。
しかし、ソリューションのテストを実行すると、MsTest プロセスは次のようになります。
- 「Out」フォルダー内のすべての DLL をコピーします。
- 「Out」フォルダーでテストを実行します
結果として、"Out" フォルダへのコピーは、mscorlib.Moles.dll の 2 つのバージョン (タイプ 1 とタイプ 2) をコピーしようとし、もちろん、2 つ目は最初のものを上書きします。
そのため、モール アセンブリが正しくないため、"Test DLL A" のテストは失敗します。
もちろん、2 つの簡単な回避策があります。
- すべての .moles ファイルに (すべてのプロジェクトで) 必要なすべての型を含める
- タイプフィルタリングを使用しない
あなたもこの「問題」に直面したことがありますか?他の解決策はありますか?
どうもありがとう !
Pierre-Emmanuel DotNetHub ユーザー グループ リーダー
unit-testing - pex パラメータ化単体テストでの値の生成
Pex を使用して単体テストを構築しています。私の問題は、すべてのコード ブランチがテストされているわけではないことです。Pex は、同じ条件に失敗するパラメーター値を生成し続け、その条件の後のすべてのコードが実行されないようにします。
私の方法は次のようになります:
すべてのコードに到達できるように、そのテストに合格するように Pex に指示することは可能かどうか疑問に思います。これが不可能な場合は、Pex にテストの 1 つの関数パラメーターの既定値を使用させることができます (存在しない場合、これは良い機能になると思います)。
ありがとうございました
unit-testing - パブリッククラスのモルで「非パブリック」メソッドを流用する方法
ローカルのプライベート メソッドを使用して Db からデータを取得するパブリック メソッドがあります。
private string SomeMethod(string)
{
...
Doing some operations
...
string data = GetDBData(string);
Doing some operations
...
}
モルを使用してプライベート メソッド GetDBData(string) を流用/分離したいので、テストで DB は必要ありません。
明らかに、私の質問は次のとおりです。それを行う方法は? ありがとうウリア
編集
追加情報:
メソッド アクセサーを public と internal protected の両方に変更しようとしましたが、どちらの場合もメソッドがモグラとして表示されるようになりました。しかし、テストを実行すると、元のメソッドがまだ使用されており、PexMethod で実装した迂回は使用されていません。
pex - .NET 3.5 プロジェクトでの Pex の実行
現在、.NET 3.5 で作成された SharePoint 2010 ソリューションで Pex と Moles を使用しようとしています。テスト プロジェクトを追加すると (Pex -> Create parameterized tests を使用して)、すべて正常に動作するようです。ただし、コンパイルしようとすると、膨大な数のエラー (名前空間の欠落など) と、参照されたアセンブリを解決できないという警告 (.NET 4 では単一の DLL ではない System.Web など) が表示されます。 .
これは、テスト中のプロジェクトが .NET 3.5 で、Pex テスト プロジェクトが .NET 4.0 であることによるものですが、この組み合わせを機能させることはまったく可能ですか?
code-contracts - Pexがコード契約を満たしていない
私はpexテストを作成しようとしていますが、必要なパラメーターの1つとして常に誤った値をフィードしていることに気付きました。私のテストは次のようになりました(簡略化:パラメータが多い/ありましたが、それ以外は違いはありません):
私は、pexに探索を行わせ、それvalue
が真実であることを確認するシナリオをテストしたかったのです。私は次のような別のテストを行いました:
しかし、私がPexにそれを調査してもらったとき、それはまだfalseに唾を吐き、value
それが生成するテストは「合格」です。要件の後に「Contract.Assert(!value);
別のテストを作成value
し、アサーションに失敗するためにtrueに合格する」という行を追加すると、
問題は、なぜPexがコード契約を満たさないのかということです。
visual-studio-2010 - 右クリックしても「RUN PEX」が表示されない
Windows XP マシンで VS2010 Pro を実行しています。PEX & Moles をダウンロードしてインストールしました。それはすべてうまくいきました。C# プロジェクトを開いてクラス メソッドにカーソルを合わせて右クリックすると、(インストール) ドキュメントによると、「run pex」または「pex」の選択肢が表示されません。
私が見る限り、私はすべて本通りにやったが、喜びはなかった. どこかに忘れ物をしているようなのですが、何ですか?誰が私を助けることができますか?
visual-studio-2010 - Visual Studio 2010 Ultimate の Pex と F#
F# プロジェクトで Pex を使用しようとしてきましたが、いくつかの問題に直面しました。
Visual Studio Pex アドインは、複雑なプロジェクトの調査ではなく、30 分間機能しました。
その後、Visual Studio 2010 内から Pex Exploration を実行するたびに、
!warning! [metadata] no explorations found after applying all filters; did you forget a [PexClass] or [PexMethod] attribute?
エラー メッセージが表示されます。探索を行うときに Visual Studio によって実行されるコマンドをコピーして貼り付け、いくつかの属性 (sourceFilter など) を削除してコマンド コンソールから実行すると、生成されたテストがいくつか得られます。ビジュアルスタジオが無効なコマンドを生成する理由は何ですか?しばらくすると、Microsoft.Pex.Framework.dll が .Net 参照リストから消え、ファイル パスを使用して手動で参照するか、参照することさえできなくなり、Pex をアンインストール/再インストールする必要があります。(
A reference to C:\Program Files (x86)\Microsoft Moles\PublicAssemblie\Microsoft.Pex.Framework.dll could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.
)
C# プロジェクトで作業している場合、これらの問題はすべて発生しません。
問題 1 2 3 は、アカデミック バージョンで発生しました。
MSDN サブスクライバーで利用可能なバージョンを使用すると、Visual Studio (Visual Studio 2010 Ultimate NO SP1) 内で動作するようになりませんでした。ただし、コマンドプロンプトからは機能しました。このバージョンでは問題 3 に直面しませんでした。
Visual Studio 内で Pex を F# で動作させることができた人はいますか? はいの場合、どうやってそれをしたか教えていただけますか?どのバージョン (VS と Pex) を使用していますか?
moles - Moles 0.94 のインストールで pex.powertool.x64.msi が見つからない
最新の Moles/Pex 0.94 をインストールしようとしていますが、pex.powertool.x64.msi が見つからないため、以前のバージョンをアンインストールできません。ここにある複数のコンピューターでこのファイルを検索しましたが、どこにも見つからないようです。このファイルはどこかで入手できますか、または pex/moles を手動で削除する方法はありますか?