問題タブ [googletest]

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 に答える
5625 参照

c++ - Visual Studio C ++:Googleテストを使用した単体テストexeプロジェクト?

Visual Studio 2010 C++ を使用します。単体テストを試していて、Google Test (gtest) を試すことにしました。MFC 実行可能ファイルにコンパイルする既存のプロジェクトがあります (DLL にコンパイルするプロジェクトをテストする方法にも興味があります)。単体テストの規則についての私の理解は、テスト用に新しい別のプロジェクトを作成する必要があるということです。そこで、単体テスト用に同じソリューションで新しいプロジェクトを作成しました。しかし、どうすればプロジェクトをリンクできますか? テスト プロジェクトから exe プロジェクトの任意の関数/メソッドをテストできますか?

これを行う従来の方法は何ですか?

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

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

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

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

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

vxworks - VxWorks 6.6 + / Wind River 3.0 での Googletest

WindRiver 3.0 / VxWorks 6.6 で googleTest をリアルタイム プロセスに正常に移植した人はいますか?

gtest をビルドすることはできますが、リンク時にいくつかのエラーが発生します。コードのこれらの特定のセクションを変更できますが、実行時エラーしか発生しません。

これが私が見ているものです: googleTest.so: isascii(int)' googleTest.so: undefined reference togettimeofday への未定義の参照 googleTest.so: `strcasecmp' への未定義の参照

2 つの共有ライブラリ (.so) があります。1 つは gtest 用、もう 1 つは gtest_main 用です。テスト コードがある RTP (リアルタイム プロセス) が 1 つあります。

注: vxworks で googletest をコンパイルするには、いくつかのフラグを変更する必要がありました。

洞察やアドバイスは大歓迎です。

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

c++ - 複数の異なるタイプのパラメーターで値をパラメーター化した Googletest は、mbUnit の柔軟性に対応できますか?

C++/CLI で記述された次の mbUnit テストの複雑さに理想的に一致する、異なるデータ型の複数のパラメータで値パラメータ化されたテストを使用できる C++ Google テストを記述したいと思います。

mbUnit の説明については、Hanselman 2006 の記事を参照してください。この2019年の編集の時点で、彼が含む他のリンクは無効になっています.

[Test]これがテストメソッドであることを示す属性と[Row(...)]、インスタンス化の値を定義する属性で、これがいかにコンパクトであるかに注目してください。

またはさらに良いことに、C# からのこのよりエキゾチックなテスト (.Net 属性で定義できるものの境界を、C++/CLI で可能なものを超えて押し広げます):

ヘルプには、値パラメーター化されたテストを使用すると、テストを 1 回だけ記述して、任意の数のパラメーター値で簡単にインスタンス化して実行できると書かれています。しかし、それはテストケースの数を指していると確信しています。

データ型を変えなくても、パラメータ化されたテストは1 つのパラメータしかとれないように思えますか?

2019年更新

この質問について ping を受け取ったので追加しました。Row表示されている属性は mbUnit の一部です。

mbUnit の説明については、Hanselman 2006 の記事を参照してください。この2019年の編集の時点で、彼が含む他のリンクは無効になっています.

C# の世界では、NUnit はジェネリックをParameterized Fixturesとして処理する方法など、より強力で柔軟な方法でパラメーター化されたテストを追加しました。

次のテストは、x の値ごとに 3 回、合計 15 回実行され、それぞれが -1.0 から +1.0 までの 5 つのランダムな double と組み合わされます。

次のテスト フィクスチャは、NUnit によって 3 回インスタンス化され、引数の各セットを適切なコンストラクターに渡します。引数として提供されるデータ型に一致する 3 つの異なるコンストラクターがあることに注意してください。

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

c++ - mingw と c++0x の _stricmp が存在しませんか?

私は現在、MinGW で googletest を使用しようとしていますが、使用しない場合はそうではない-std=c++0xと文句を言います。で定義されていることがわかりましたが、なぜ C++0x でなくなったのですか?_stricmp is not declared in this scope-std=c++0x_stricmpcstring/string.h

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

c++ - Googletest は EXPECT_THROW の一時オブジェクトを受け入れません

デフォルトのコンストラクターを持たないクラスがありますが、コンストラクターがスローする可能性があります。私は次のようなテストをしたいと思っていました:

しかし、コンパイラ はg++、 のデフォルト コンストラクタがないと文句を言いますMyClass。ただし、以下...

...動作し、テストは期待どおりに合格します。Googletest が一時オブジェクトを受け入れないのはなぜですか?

興味深いことに、別の変数にファイル名が含まれないようにテストをリファクタリングしていたので、確認を求められたときに、次のように動作することがわかりました。

ただし、次の場合はそうではありません。

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

c++ - gtest.lib と gtest_main.lib の違いは何ですか?

Google の C++ テスト フレームワークには 2 つの出力ライブラリがあります。1 つは gtest.lib で、もう 1 つは gtest_main.lib です。Visual Studio で gtest をセットアップする方法に関するNik Reiman の回答によると、gtest_main.lib にリンクする必要がありますが、私は gtest.lib にリンクしており、私が持っているサンプル テスト ケースは正常に動作しています。

2 つのライブラリの違いは何ですか?どちらにリンクしても問題はありませんか?

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

c++ - Visual Studio 2010: Google Test によるビルドと開発サイクル?

googletest で Visual Studio 2010 C++ を使用します。単体テストは初めてで、それを試すためのテスト ソリューションを作成しました。ソリューションには 3 つのプロジェクトがあります。

私は googletest (および googlemock) をコンパイルしてリンクし、正常に動作しています。私の質問は、コード テスト開発サイクルに関するものです。テストで適切なワークフローを理解しようとしています。現在、HelloService.Tests を「スタートアップ プロジェクト」として設定すると、F5 キーを押すとテストが実行されますが、HelloApp は実行されません。HelloApp をスタートアップ プロジェクトとして設定すると、F5 キーを押すとアプリは実行されますが、テストは実行されません。

「HelloApp」をスタートアッププロジェクトとして使用したいと思いますが、ビルド時と実行前にテストを実行します。そうですか?そのためにはどのように設定すればよいですか?

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

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