問題タブ [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.
c++ - cmake - UnitTest++ リンク ユニット テスト バイナリが失敗する
私は CMake は初めてですが、私の C++ プロジェクト用に CMakeLists.txt ファイルをセットアップすることができました。ところで、このセットアップに少し似ています。単体テストに UnitTest++ を使用する必要がありますが、何らかの理由で単体テスト実行可能ファイルのリンクに失敗します。シェル出力は次のとおりです。
これは私のルート CMakeLists.txt ファイルです:
これは、実行可能なユニット テスト バイナリに関連する CMakeLists.txt ファイルです。
そして、これが私のプロジェクトのライブラリの構築に関連する最後の CMakeLists.txt ファイルです。
私が間違っていることは何ですか?
c++ - Codelite と UnitTest++
Codelite での UnitTest++ の統合がどのように機能するのか、つまり、UnitTest++ のヘッダー ファイルと libUnitTest++.a をどこに配置すればよいのか、誰か説明してもらえますか?
私はUbuntu 12.04に取り組んでいます。
python - Python unittest の印刷ログは Linux では機能しますが、Windows では機能しません
stdout と stderr を Windows ネットワーク ドライブに書き込まれたファイルにリダイレクトする単体テストを作成しようとしています。何らかの理由で、同じスクリプト (diff. のみがディレクトリ パス) が Linux では機能しますが、Windows では機能しません。Windows で実行すると、ログ ファイルには何も書き込まれません。
Windows のスクリプトは次のとおりで、何も書き込まれません。
Linux で同じスクリプトを実行すると、動作するか、少なくともファイルに書き込みます。
クラス MyTestLinux(unittest.TestCase):
unit-testing - 単体テストとTDD(テスト駆動開発)の違いは何ですか?
違う名前で同じものですか?
両方の「テスト」という言葉は、どういうわけか私にそれらが似ていると思わせます..
unit-testing - オプションのテストの処理
CATCH、Google Test 、およびその他のフレームワークでテストをスキップする方法がないため(少なくとも、そうする理由を指定して出力で確認する従来の意味では)、それが必要かどうかを考えさせられました (私は過去のプロジェクトでUnitTest++を使用してきました)。
通常、デスクトップ アプリで何かをスキップする理由はありません。テストするかしないかのどちらかです。ただし、ハードウェアに関しては、保証できないものもあります。
たとえば、2 つのデバイスがあります。1 つにはビーパーが組み込まれていますが、もう 1 つにはありません。UnitTest++ では、システムにクエリを実行し、ビープ音を使用できないことを確認し、ビープ音に依存するテストをスキップします。もちろん、CATCH でも同様のことができます。初期化中にシステムにクエリを実行し、「ビープ音」タグ ( CATCHの特別な機能) を持つすべてのテストを除外するだけです。
ただし、わずかな違いがあります: テスター (私以外の誰か) は出力を読み、言及されているオプションのテストを見つけられません (一方、UnitTest++ ではそれらはスキップされたとマークされ、その理由は出力の一部として提供されます) )。彼の最初の考え:
- これは、テスト アプリの古いバージョンである必要があります。
- スイート X を有効にするのを忘れたのかもしれません。
- 何かが壊れている可能性があります。開発者に問い合わせる必要があります。
- 待ってください、多分彼らはちょうどスキップされました. しかし、なぜ?とにかく開発者に聞いてみます。
さらに、実際にはスキップされるべきではないのに、それらのテストがスキップされたことに気付かなかった (つまり、ビープ音の有無に関係なく、OS は「false」を返します。これは重大なバグです)。1 つのオプションは、「スキップされた」テストを合格としてマークすることですが、それは不必要な回避策のように感じます。
私が気付いていない巧妙なテクニックはありますか (つまり、オプションのテストをスタンドアロン プログラムに完全に分離することはわかりません)? そうでない場合-UnitTest ++に固執する必要がありますか? それは仕事をしますが、コードの繰り返しを避けるのに役立つCATCH のSECTIONsとtagsが本当に好きです。
c++ - 最新の UnitTest++ の置き換え
編集:この質問は、「実際のプログラミングの質問ではない」ため、投票が終了する可能性があります。「にゃー!」としか言い返せません。今、私はこの質問を見つけました。これは直接関連しており、役立つはずです。
私はソース コードを C++11 の時代に合わせて整然とアップグレードしています。多くのコードがやり取りする部分の 1 つは UnitTest++ です。
すべての実装ファイルの後半をcpp
単体テスト専用にしているため、多くの実装ファイルが含まれています。
宣言。
現在、UnitTest++ は約 8 年前のものですが、今でも問題なくコンパイルできるので、早急に置き換える必要はありません。しかし、ウェブサイトとソースフォージがダウンしているため、おそらくメンテナンスされていないことがわかりました (既存の機能は確かに十分に堅固に見えますが、これは悪い兆候です)。
したがって、私のコードは今は問題なく動作しますが、後でよりも早くより良いシステムに切り替えることは、将来の翻訳の負担を軽減するので、今は有益かもしれません.
少し調べてみたところ、いくつかの選択肢があるようです。特に興味深いのはlibunittestと、ヘッダーのみのCATCHのようなものです。
私の質問は、過去に UnitTest++ や他の単体テスト システムを使用した経験がある人に、何がうまくいったのか、何か推奨事項があるかどうかです。非常に移植性が高く、C++98/03 または C++11 コンパイラ (gcc、clang、msvc) および標準ライブラリ以外の外部依存関係がなく、ヘッダーのみであることがプラスになるものを探しています。しかし、必要ではありません。
ですから、私の好みは選択肢をかなり狭める傾向があると思います. UnitTest++ でも、その移植性と自己完結型を楽しんでいますが、次の 2 つの方法で柔軟に拡張するには、約 100 行程度のコードを書かなければなりませんでした。
- 実行する特定のテストを指定できるようにする (テストを名前で選択するか、テストが実装されているソース ファイルで選択するか、テスト スイート名で選択するか)
- テストごとのタイミングデータを表示し、最後に合計を要約するなど、テストのレポート動作をカスタマイズします-実際には、この機能と動作に多少不満があります。たとえば、詳細なテストを適用するように UnitTest++ を構成する方法がわかりませんテスト スイート内に配置されていないテストに対して実行するレポーター。
完璧な答えは、UnitTest++ 自体の背後にいる人物の 1 人に他なりません! しかし、その記事は10年前のものです!!
c++ - Unittest++ はテストを認識しません
私は現在、機能を拡張する前に既存のプログラムをリファクタリングするために、単体テスト (今週学んだばかりです) を実行しています。
ただし、UnitTest ++は、テンプレートクラスで約5〜6個のテストを実行した後(完全なコードはこちら)、「プロジェクトに0個のテストが含まれています」というエラーが突然発生し、テストを元に戻したにもかかわらず、このエラーが発生し続けますエラーが表示される前のコードに戻します。現在、オブジェクトがインスタンス化されるたびに失敗します。
このクラスは、最適化アルゴリズムでデータの配列を管理するためのものであるため、関数は配列を初期化、読み取り、書き込み、および更新するだけであり、それ自体は問題になることはありません (または多くのテストが必要)。
同様の問題を議論しているスレッドが見つかりません。誰かが私にその原因を指摘できれば、それは素晴らしいことです.
仕様:
Windows 8.1 の IDE として CodeLite 8.2.0 を、コンパイラとして MinGW (TDM-GCC-32) を、ユニット テスト フレームワークとして UnitTest++1.3 を使用しています。
UnitTest++ が壊れる前のコードは次のとおりです (役に立つ場合があります)。
このテストをリストに追加すると、エラーが発生しました。
c++ - UnitTest++ は最小限すぎて実用的ではない
私は、次のプロジェクトで使用できる C++ ユニット テスト フレームワークの評価を準備するタスクを割り当てられ、UnitTest++ のミニマリズムとシンプルさに魅了されました。ただし、ツールの配列が少なすぎないかどうかは非常に心配です。
たとえば、特定のクラスにsigned intメンバーがあり、負になることはできませんが、UnitTest ++には等値アサーションしかないため、アサートでテストできない状況を想像できます。いくつかのカスタム メッセージで提供される通常の CHECK を使用できればそれほど悪くはありませんが、知る限り、カスタム ロギングはサポートされていません。
UnitTest++ の作成者は、true、equals、または throws 以外のアサーションが実装を気にしないほどフリンジであると判断したとき、彼らが何をしていたかを知っていたと固く信じています。それにもかかわらず、他のフレームワークで利用可能な機能が不足しているために問題が発生したことがある場合は、このフレームワークを使用している人から連絡を取りたいです。