問題タブ [googlemock]

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.

0 投票する
3 に答える
5966 参照

c++ - googlemockを使用して単純なC++メソッドをモックしようとする試みの何が問題になっていますか?

標準ライブラリ呼び出しを行うC++メソッドの単体テストのパターンに従って、私はネットワーク抽象化クラスの開発をテスト駆動しています。BSDソケットを処理するために(モックできない)標準Cライブラリ呼び出しを行うテストコードを単体化するためにISocket、実際の実装CSocketとモックの両方がMockSocket継承するインターフェイスを定義しました。

Networkここで、クラスの最初の単体テストを作成します。これはISocket、重い物を持ち上げるためにを使用します。

しかし、コンパイル時にこのエラーが発生します。

そして、これが私のインターフェースとモックがどのように見えるかです:

私がここで間違っていることについて何か考えはありますか?

0 投票する
1 に答える
14065 参照

mocking - モックで期待されるメソッドが呼び出されたときにメソッドを呼び出す

次のシナリオがあります。

doSomethingが呼び出された場合、MockAでfooが呼び出されます。fooが呼び出される場合、メソッドblaの呼び出しをトリガーするにはどうすればよいですか?次のような期待値を作成することはどういうわけか可能ですか?

答えが明確で、例もあることを願っています。

前もって感謝します。マート

0 投票する
5 に答える
1539 参照

googletest - 同じクラスのメソッドとモック

私は2つのメソッドを持つクラスを持っています

FunRet が返すものに応じて Fun() メソッドをテストしたい。だから私は FunRet をモックしたいです。私は FunRet を仮想にしたくありません。どうすればそれができますか?

0 投票する
4 に答える
19484 参照

c++ - C ++ユニットテスト:スタブ(モックではない)?

C++でユニットテストを始めたところです。進むにつれて、いくつかのスタブクラスを作成する必要があるようです。私の理解では、モックとスタブには違いがあります。基本的に、モックはオブジェクトで何かが起こったことをテストしているとき(検証など)に使用されているようですが、スタブはテストを容易にします。モックについては、googlemockを使用できますが、スタブ(ala RhinoMocksのGenerateStub)を作成するために何も表示されません。

自動生成されたスタブを取得する方法はありますか?googlemockはスタブをサポートしていますか?または、テスト用のスタブを手動で作成する必要がありますか?

0 投票する
1 に答える
3134 参照

c++ - operator []を使用してモッククラスを作成するにはどうすればよいですか?

私はoperator[]このようなクラスを持っています:

このメソッドのグーグルモックフレームワークを使用してモッククラスを作成するにはどうすればよいですか?

私はこれを試しました:

しかし、それは次のエラーを生成します:

0 投票する
2 に答える
6655 参照

c++ - Googleモック:抽象クラスタイプ「xyz」のオブジェクトは許可されていませんか?

Visual Studio 2010C++をGMockで使用する。クラスで使用されるサードパーティクラスのスタブオブジェクトを作成しようとしていますが、次のエラーが発生します。

エラー:抽象クラスタイプ「ThirdPartyClassFake」のオブジェクトは許可されていません。

サードパーティのクラスは次のように定義されます。

私はこれのモックを作成しました:

今私のテストでは、私はやろうとしています:

エラーは「ThirdPartyClassFakeスタブ」にあります。ライン。このエラーが発生するのはなぜですか?モック/スタブオブジェクトを正常に作成するにはどうすればよいですか?

0 投票する
2 に答える
7502 参照

c++ - Googleモック:プログラムの終了時にリークされたモックオブジェクトが見つかりましたか?

テストを次のように定義すると、機能します。

ThirdPartyClassFakeは、私が作成したgoogleモッククラスです。

スタブへのポインタをラッパークラスに渡すコードを追加すると、リークされたメモリエラーが発生します。

エラーは次のとおりです。

関連性があるかどうかはわかりませんがThirdPartyClassFake、サードパーティの抽象クラス(私は制御できません)のサブクラスを、すべての仮想メソッドを使用して追加する必要がありますが、仮想デストラクタは追加しません。また、Microsoft固有の属性で宣言されています__declspec(novtable)

Google Mock FAQで説明されているように、問題は仮想デストラクタの欠如にあるのではないかと思いました。しかし、それが問題だったとしたら、最初のテストも失敗するはずです。

このエラーを修正/回避するにはどうすればよいですか?

0 投票する
2 に答える
10564 参照

c++ - Google Mock: "no appropriate default constructor available"?

Using Visual Studio 2010 C++ with googlemock. I'm trying to use a mock I created and I'm getting the compiler error on the line:

The error is:

EmployeeFake:

Employee:

I gather that the problem is that the base class doesn't have a default constructor but how should I fix this? Do I need to add a default constructor to my base class? Or do I need to add a constructor to my mock class? Or something else?

0 投票する
3 に答える
4495 参照

c++ - 単体テスト: インターフェイスへのコーディング?

現在、私のプロジェクトはさまざまな具象クラスで構成されています。単体テストに取り掛かると、すべてのクラスのインターフェイスを作成することになっているように見えます (プロジェクト内のクラスの数を効果的に 2 倍にします)。私はたまたま Google Mock をモッキング フレームワークとして使用しています。インターフェイスに関する Google Mock CookBook を参照してください。以前はクラスCarとだけだったかもしれませんがEngine、今では抽象クラス (別名 C++ インターフェイス)CarEngine実装クラスCarImplementationなどがありEngineImplます。Carこれにより、に対する の依存関係をスタブ化できますEngine

これを調査する際に私が遭遇した2つの考え方があります。

  1. 特定の抽象化の複数の実装が必要な場合やパブリック API で使用する必要がある場合にのみ、インターフェイスを使用してください。それ以外の場合は、不必要にインターフェイスを作成しないでください。

  2. 多くの場合、単体テストのスタブ/モック「他の実装」であるため、はい、インターフェイスを作成する必要があります。

単体テストを行う場合、プロジェクト内のクラスごとにインターフェイスを作成する必要がありますか? (私は、テストを容易にするためにインターフェイスを作成することに傾いています)