問題タブ [pex-and-moles]
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.
c# - MS Moles で DataContext を Moling しますか?
メッセージをテーブルに書き込むためにクラスで使用している DataContext をどのようにモール化できますか。LINQ が書き込んでいるテーブルには、予想されるメッセージ数があると断言したいと思います。これが私がこれまでに持っているものです。
テスト対象のクラスで xUnit を使用してこのコードを使用すると、この例外が発生します
ここで欠けているものと、ほくろに DataContext.Dispose() を実装する方法は? 私は、Pex なしでモルをスタンドアロンで使用しています。
unit-testing - Moq と Rhino モックの構文比較
私の会社は、Moq、Rhino Mocks、または MS Moles と Stubs で標準化するかどうかを決定しようとしています。
私は Rhino のモックと Moles と Stubs をかなりよく知っています。しかし、私はMoqに慣れていません。構文はどのように機能しますか? Rhino Mocks のように Arrange Act Assert (AAA) をサポートしていますか (彼らが作成したと聞いていますが、よくわかりません)。それは強いタイピングを持っていますか?
基本的に、私は Rhino Mocks (必要に応じて Moles を使用) に傾倒しています。しかし、Rhino Mocks に精通しているという理由だけで、そのようなことはしたくありません。Moqが実際に優れている、または(さらに重要な)使いやすい場合は、それを学び、それを選択したいと思います.
それで、両方を使用していて、構文の比較をしたいと思う人はいますか?
unit-testing - Entity Frameworkで「PexandMoles」ライブラリを使用するにはどうすればよいですか?
Pex&Molesを使用する人はそれほど多くないので、これは難しい問題だと思います(Pexは本当に素晴らしい製品ですが、他のどの単体テストツールよりもはるかに優れています)
エンティティが1つだけの非常に単純なモデルを持つデータプロジェクトがあります()DBItem
。DBRepository
このプロジェクト内で、このEFモデルを操作するものも作成しました。リポジトリには、GetItems()
ビジネスレイヤーアイテムのリスト()を返すというメソッドがBLItem
あり、次のようになります(簡略化された例)。
そこで、この特定のメソッドの単体テストをいくつか作成したいと思います。私はPex&Molesを使用しています。EFオブジェクトコンテキスト用にほくろとスタブを作成しました。
このメソッドが有効なアイテムのリストを返すことをテストするパラメーター化された単体テスト(最初に製品コードを作成したことは知っていますが、Pex&Molesをテストしているので作成する必要がありました)を作成したいと思います。
これは私のテストクラスです:
次に、この特定のパラメーター化された単体テストに対してPex Explorationsを実行しましたが、エラーパスの境界を超えました。Pexは、null
このテストメソッド(so items = null
)を提供することによってこのテストを開始します。これは、Pexが実行しているコードです。
これは、Pexによって提供された追加のコメントでした。
テストケースはこれらの入力に対して長すぎたため、Pexは分析を停止しました。注意:メソッドOblivious.Data.Test.Repositories.TaskRepositoryTest.b__0が50回呼び出されました。コードが無限ループまたは再帰でスタックしていないことを確認してください。それ以外の場合は、[MaxStack = 200に設定]をクリックして、Pexを再度実行します。
属性を更新[PexMethod(MaxStack = 200)]
質問
私はこれを正しい方法で行っていますか?代わりにEFContextスタブを使用する必要がありますか?Molesホストが実行されるように、テストメソッドに属性を追加する必要がありますか(現在実行されているかどうかはわかりません)。私はPex&Molesだけを実行しています。VSテストやnUnitなどはありません。
この特定のテスト方法で提供するアイテムの数に、おそらくPexに制限を設定する必要があると思います。
.net - 自動コード探索を備えたパラメーター化されたテスト ツール
Microsoft Pexで少し調べて遊んだ。パラメーター化された単体テストを作成するのは簡単ではありませんが、非常に便利なツール/ライブラリです。ただし、正しく使用すると、手動で単体テストを作成するよりもはるかに優れたテスト コード カバレッジを提供できます。これらのテストの作成に費やした時間は言うまでもありません。また、Visual Studio ともうまく統合されます。
パラメータ化された単体テストを記述して実行できるツールが他にあるのではないかと思っていました。これにより、内部アルゴリズムがインテリジェントに値を選択して、完全なコード テスト カバレッジを提供できます。
他のツール/ライブラリが NUnit+Moq と同じくらい使いやすいものであれば、私はさらに喜んでいます。Pex の学習曲線は非常に急です (Moles もそうだと思います)。
NUnit が将来、インテリジェントなパラメーター選択を使用してパラメーター化されたテストをサポートする計画はありますか? 内部情報を持っている人はいますか?
c# - HostType("Moles") を使用した単体テストのアサートが、個別に実行すると成功するのに、テストのグループで実行すると失敗するのはなぜですか?
私は最近、静的、非仮想、封印などの多くの要素を含むいくつかのロジックをテストするために、Pex & Moles の時流に乗りました。最近、いくつかのテストから説明できない動作を見始めました。 .
私がスタブ化したインターフェイスのいくつかのメソッドは void を返すため、スタブをデリゲートに設定し、ブール変数を更新してそれらが呼び出されたことを示します。これが私がやっていることです:
何らかの理由で、このテストを単独で実行すると、上記のアサートは成功します。しかし、(Visual Studio の [ソリューション内のすべてのテストを実行] 機能を使用して) アセンブリ内の他のすべてのテストと共にテストを実行すると、最初のアサートが失敗します。
この問題が発生する理由と、問題を解決するために何を変更する必要があるかを知りたいです。
c# - 接続文字列を使用せずにデータ コンテキストとストアド プロシージャで MS Moles を使用する
私はテストのために MS Moles を使い始めたばかりで、jcollum(thanks) がこの stackoverflow question hereのテーブルに Mole を使用するというアイデア/パターンに従いました。
しかし、データソースをそのまま使用するときに接続文字列を渡す必要がないため、問題が発生しています。
テーブルをこするだけで、あとはすべて自分でやってくれるという事実が本当に気に入っています。ExecuteStoredProcedure メソッドをほくろできることはわかっていますが、接続文字列を渡さないときにここで発生する sql 例外をどうにかして回避できるかどうか疑問に思っています。または、これを行うためのより良い方法があれば?
したがって、接続文字列に配置しないようにするための解決策はありますか? 前もって感謝します。
tfs - ほくろアセンブリを使用するプロジェクトでTFS2010でビルドを使用すると、参照を解決できないため、-1002で失敗します
何度もプレイした後、テストプロジェクトを除くすべてのプロジェクトでビルドを実行できるようにTFSを取得することができました。これらにはモルアセンブリがあります。
私が得ているエラーは
C:\ Program Files \ Microsoft Moles \ bin \ Microsoft.Moles.targets(79):
コマンド "" C:\ Program Files \ Microsoft Moles \ bin \ moles.exe "
@" C:\ Builds \ 2 \ cv2 \ DevBranchBuild \ Sources \ CV.BL.Tests \ obj \ Release \ Moles \moles.args""
はコード-1002で終了しました。
警告は
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1360):
この参照を解決できませんでした。
アセンブリ"CV.DAL.Moles、Version = 1.0.0.0、Culture = neutral、processorArchitecture=MSIL"が見つかりませんでした。
アセンブリがディスク上に存在することを確認してください。
この参照がコードで必要な場合、コンパイルエラーが発生する可能性があります。
CV.DALは、私がモリングしているアセンブリです。
私は最新バージョンのpexとmolesを使用しています。
また、CV.DAL.moles
ファイルをTFSにチェックインしました(アセンブリではありません)。すべてが私のローカルマシンで完全に正常に構築されます。ビルドに使用しているマシンの構成はまったく同じです。正確には、1つは32ビットで、もう1つは64ビット:o(深刻な監視)です。
何か案は?
これは、ブランチをマージするときにゲートチェックインを壊しているため、ペックスとモグラをまったく役に立たないものにします。これは、かなりの時間を費やしたため、非常に残念です。
編集
どのmolesAssembliesディレクトリですか?
ほくろのインストールフォルダまたはプロジェクトの下のディレクトリ?
インストールフォルダには、両方のマシンで同じファイルとファイルサイズがあります。
.net-3.5 - 3.5 MsTest ユニット テスト アセンブリでテストを記述できますか?
こんにちは: Pex と Moles をいじって楽しんでいます。今度は、これを本格的に使用して、レガシー アプリを可能な限りカバーします。
.NET 3.5 に変換することから始めました (クライアントはまだ .NET 4.0 でホストできません)。
Moles を機能させるのに問題があることに気付きました。
Test Project アセンブリが .NET 4.0 の場合は動作するようですが、Unit Tests アセンブリ フレームワークを .NET 3.5 に戻すと (Visual Studio 2010 SP1 をインストールしてその機能を提供した後)、動作しなくなります。
「.NET Framework 3.5 をターゲットとするテスト アセンブリから、既定のホスト アダプターを使用してのみテストを実行できます」と不平を言い続けます。
クライアントがユニット テストを含め、すべてを .NET 3.5 にしたい場合...何かアイデアはありますか?
unit-testing - DateTime で Moles を使用する
私は単体テストで Moles を使い始めており、ドキュメンテーションに少し苦労しています。
DateTime.Now をほくろしたい。
mscorlib への参照を追加するという古い方法を見回した場合は、そのための stubx ファイルを追加します ([新しい項目を追加] -> [テスト用のスタブとモール])。
'Stubs and Moles for Testing' テンプレートは廃止されました。代わりに、参照を右クリックして [Add moles assembly] を選択するだけで問題ありません。
VS2010 では、mscorlib への参照を直接追加することはできません。"System" への参照があるためです。オブジェクト ブラウザーで DateTime をこの名前空間の一部として表示できるので、これは問題ありません。
システム参照用のモール アセンブリを追加して再構築しても、MDateTime を解決できません。
助言がありますか ?
.net - XUnitでのMolesの使用-間違ったdllバージョン
ユニットテストで使用するようにMolesを設定しようとしています。私たちはxunitを使用しているので、私はusing
moles()に付属するXunit拡張機能ですMicrosoft.Moles.Framework.Xunit
。ただし、Xunit 1.7を実行しているため、Molesはバージョン1.6.1.1521(を使用FileLoadException
)を実行していないと文句を言っています。
Molesマニュアル(28ページ)には次のように書かれています。
xUnit.netバージョン:
1.5.0.1479(他のxUnit.netバージョンの場合、ソースから属性を再コンパイルします)
これは私が立ち往生しているところです-このxunit拡張機能のソースコードはどこかで入手できますか?または、Molesが必要とする特定のバージョンのxunitを使用する必要がありますか?