問題タブ [unittest++]

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 投票する
1 に答える
1793 参照

macos - Mac OS X で UnitTest++ をビルドすると、「ld: in libUnitTest++.a, archive has no table of contents」が表示されるのはなぜですか?

UnitTest++ バージョン 1.4 を ( http://sourceforge.net/projects/unittest-cpp/から) ダウンロードして make すると、次のようになります。

同じバージョンの gcc (4.2.1) を使用している同僚の Mac では、このエラーは発生しません。(注: 同僚が作成した libUnitTest++.a を使用できるので、ブロックされませんが、それでもこの問題のトラブルシューティングを行いたいと思います。)

私はGoogle検索を行いましたが、他の同様の問題を解決したようranlibですが、 libUnitTest++.a が作成されていないため、実行できませんranlib

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

c++ - UnitTest++のブレークポイント

CodeliteエディターでUnitTest++を使用してユニットテストを作成しています。ただし、単体テストアプリケーションをデバッグしている場合、ブレークポイントはヒットしません。デバッグモードでも表示されません。UnitTest ++テストをデバッグすることはできませんか?または私が間違っていることは何ですか?

前もって感謝します!

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

c++ - UnitTest++ 非 const char* を取る CheckEqual() オーバーロードが必要な理由

UnitTest++ フレームワークのChecks.cpp モジュールには、4 つのオーバーロードされたバージョンの CheckEqual があります。各オーバーロードは、expected または actual に対して異なる定数を取ります。次に、4 つすべてが CheckStringsEqual() を呼び出すだけで、予想と実際の両方に char const* を使用します。オーバーロードを削除でき、すべてが正常にコンパイルされますが、文字列が配列構文を使用して宣言されている場合、2 つの const 文字列以外のものが渡されると単体テストが失敗します。

明確化 元の UnitTest++ コードは、私の実装だけでなく、この動作を示します。また、オーバーロードが削除されたときにテストが失敗するという事実も、私を悩ませています。

4 つのオーバーロードは次のとおりです。

CheckStringsEqual は

最後に、最初の CheckEqual 以外をすべてコメントアウトすると失敗するテストをいくつか示します。

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

c++ - UnitTest++ チェックで C++ 列挙型を使用するには?

私は次の列挙型を持っています:

そして、次の UnitTest++ テスト:

これはうまくいきません。自動的に int 2 に変換されると思ってCountry::SPAINいましたが、代わりに次のエラーが発生します。

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

c++ - UnitTest++入門

これは私が彼らの基本的な例から持っている現在のコードです:http://unittest-cpp.sourceforge.net/UnitTest++.html

インクルードは存在しますが、エラーが発生します。UnitTest++ライブラリ内の任意のクラス/メソッドはどこにundefined reference to UnitTest::Test::*ありますか。UnitTest::**

これを正しくコンパイルするにはどうすればよいですか?

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

c++ - UnitTest++コマンドライン引数

テストの1つでコマンドライン引数を使用したいと思います。ウェブ上でこの例を見つけることができませんでした。

何か案は?

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

c++ - unittest++のカスタマイズ

私は誰かが私の立場にあり、いくつかのアイデアを持っていることを期待してこれを求めています。いわば、車輪の再発明を避けようとしている。

UnitTest ++を使用しています:http://unittest-cpp.sourceforge.net/UnitTest++。html

私は今までにかなりの数のテストを作成しましたが、それらはすべて、テストビルドを実行するたびに実行されます。これはもちろん予想されることです。独自のTestReporterクラスを定義しました。これにより、各テストに関する情報がデフォルトよりも少し多くなります。テストの最後に各テストにかかった時間が出力され、テストの開始メッセージと終了メッセージが色分けされています。そのため、テスト出力をナビゲートする方が簡単です。

しかし、膨大な数のテストが大量の出力をダンプするため、コンソールのバッファーには最初のいくつかのテストの結果が保持されなくなり、その設定を変更するのにうんざりしています。したがって、テストを実行するためのオプションの引数として、実行したいテストをビルドし、他のテストをスキップできるようにしたいと思います。

UnitTest ++のコードはかなり単純で、もう少し見つめればおそらく理解できると思いますが、確かに誰かがすでにこれを理解していますか?argv[]をTest::GetTestList()に接続する方法を考え出そうとしています。cmdline引数を使用してテストリストをフィルタリングし、それらのテストのみを実行したいと思います。

うーん。単なるリンクリストのようです。私はそれを切断することができると思います...O(m * n)検索、m =合計テスト、n=指定されたテスト。上手。私は自分の質問に答え続けます。Mods:ソリューションの実装に関する回答を投稿します。うまくいけば、それは誰かを20分節約するでしょう。

編集:私は本当に述語を使うべきだと思われます:

そうすれば、直接使用できますRunTestsIf()

編集:私はそれを理解したと思います。うわー、テンプレートプログラミングへの最初の進出。

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

c++ - Volatileキーワードを使用すると、UnitTest++のconst構造にアクセスできます。

私はUnitTest++フレームワークを使用して、担当するCコードに単体テストを実装しています。最終製品は埋め込まれ、const構造を使用して構成情報を保持します。ターゲットホストは非同期で構成を変更できるため、構造体のメンバーはすべて揮発性です。一部の構造も揮発性として宣言されています。

const_castを使用して、UnitTest Windows 7ホストでvolatileキーワードがない構造インスタンスを変更しようとすると、セグメンテーション違反が発生します。これは私には理にかなっています。ただし、構造体インスタンスがvolatileキーワードで宣言されている場合、テストは合格です。これは私には意味がありません。

これは、Win7でのgccの問題を示す簡単なコード例です。定義値を切り替えると、構造体の揮発性インスタンスが使用されているかどうかに応じて、segfaultが表示されるかどうかが決まります。

volatileキーワードがセグメンテーション違反の回避策を提示する理由を誰かが理解するのを手伝ってもらえますか?また、すべての構造インスタンスにvolatileキーワードを追加せずに、単体テスト用に構造内の値を変更できるようにする方法を誰かが提案できますか?

編集:

私はあなたがCでこれを行うことができることをちょうど発見しました:

上記の効果的な「constundefine」をテストフィクスチャに含めると、ターゲットコンパイラがconstキーワードを認識し、構造をフラッシュメモリに正しく配置できるようになります。ただし、UnitTest ++コンパイラのプリプロセッサはconstキーワードを削除するため、テストフィクスチャは構造体を変更できます。

このソリューションの欠点は、関数呼び出しの正しいconst操作を検証する単体テストを追加できないことです。ただし、構造体インスタンスからconstを削除することはできません(データをフラッシュに配置する必要があります)ので、これは私が耐えなければならない欠点のようです。

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

unit-testing - UnitTest ++でカスタム失敗メッセージを表示しますか?

UnitTest ++テストクラスがあります。これにより、クラスがいくつかの文字列を正しく解析していることをテストできます。テストを実行する前に、ループ内のさまざまな関数によってテストされるいくつかの文字列を含むフィクスチャを作成します。正常に動作しているように見えますが、問題は、エラーが発生した場合、UnitTest ++で常に同じエラー行が表示されるため、問題の原因となっている文字列が正確にわからないことです。

たとえば、次のように出力されます。

しかし、それはどの文字列が正しく解析されていないかを教えてくれません。

したがって、テストが失敗したときにカスタムエラーメッセージを設定する必要があります(その特定の場合は、配列の最初の項目を指定します)。基本的に、私は次のようなものが必要です:

UnitTest ++にそのような関数はありますか?それとも、私がやろうとしていることを行うためのより良い方法がありますか?

詳細については、私のクラスのコードを次に示します。