問題タブ [cxxtest]
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++ - C++ 用の CXX テスト フレームワーク
作成したコードに基づいて単体テスト ケースを作成している場合、CXX テスト フレームワークはどの程度効果的ですか。コードのバグは、単体テスト コードのバグにも変換される可能性がありますか? ネガ2つでプラスになるようなものじゃないですか。
また、CXX に費やされる時間と労力は、コーディングの労力以上ではないにしても、少なくとも同等です。
私はこのフレームワークが私のプロジェクトで使用されることに賛成ではなく、それに反対するための長所を探しているので、これについてのあなたの考えが必要です.
一方、それが有益だと思われる場合は、教えてください:)。
unit-testing - std::vector のソートを単体テストする方法
これまで単体テストを使用したことがないので、CxxTest を試してみます。関数が std::vector を正しくソートするかどうかを確認するテストを作成しました。最初に、ベクターがソートされていないときにテストが失敗することを確認し、次に健全性チェックとして std::sort が機能するかどうかをテストしました (もちろん、機能しました)。ここまでは順調ですね。
次に、独自のソート関数を書き始めました。しかし、私は間違いを犯し、関数が正しくソートされませんでした。私のテストでは、並べ替え中のベクトルの中間状態が出力されなかったため、並べ替え関数のどこで問題が発生したかを判断するのが困難でした。私はcout
自分のバグを見つけるためにステートメント (デバッガーを使用することもできた) を使用することになり、並べ替え関数が機能することを確認するまで単体テストを使用しませんでした。
ここで何か間違ったことをしていますか?単体テストは次のように簡単だと思いました
1) テストを書きます
2) 関数を書きます
3) テスト関数を書きます
4) テストが失敗したら関数を修正します
5) テストが通るまで 3 と 4 を繰り返します
私が使用したプロセスはもっと似ていました
1) テストを書く
2) 関数を書く
3) 関数をテストする
4) テストが失敗した場合、正しく動作するまで関数をデバッグする
5) 3 を繰り返す (関数が動作することが既にわかっている場合でも)
私のソート関数の設計は、私が書いたテストによって駆動されていなかったので、私のプロセスは真の TDD ではなかったように感じます。もっとテストを書くべきでしたか? たとえば、ベクトルがソートされているときの中間状態をチェックするテストなどです。
assertions - CxxTestでカスタムアサーションを記述できますか?
CxxTestを使い始めたばかりで、std::vectorが正しくソートされているかどうかをテストしたいと思います。これまでの私のテストは次のとおりです。
明らかに、CxxTestはアサーションを提供しませんTS_ASSERT_SORTED
が、カスタムアサーションを作成する方法はありますか?それは私がこれを行うことを可能にするでしょう:
このように記述されていると、テストの意図を確認するのが非常に簡単になります。
CxxTestユーザーガイドを調べましたが、このようなカスタムアサーションを記述できるかどうかわかりませんでした。別の方法として、クラスIsSortedを作成し、そのを実装することもできますoperator()
。次に、次のようなテストを作成できます。
これが正しいアプローチだと思います。ただし、これを行う場合はclass IsSorted
、テストスイートとは別に、の定義を独自のヘッダーファイルに配置する必要がありますか?特にこのフレームワークでは、単体テストに関連するベストプラクティスを理解しようとしています。
setUp()
最後の質問:メソッドまたはテスト自体でベクトルを並べ替える必要がありますか?
c++ - cxxtestを実行すると、未定義の参照エラーが発生します
取得している未定義の参照を理解できません。
DrawTestSuite.hには、ユニットテストが含まれています。テスト関数はLinewidth.hを呼び出して、コンストラクターとメンバー関数の描画を実行します。
私は#include "Linewidth.h"
DrawTestSuite.hにいます。
java - C ++で使用しているJava imのバージョンを確認するにはどうすればよいですか
ユーザーが使用している Java のバージョンを確認し、いくつかのコマンドを実行するテスト スクリプトがあります。しかし、すべてのテストを cxxtests に変換しようとしています。バージョン チェック スクリプトを C++ コードに変換する方法を知りたいです。system() コマンドを使用できることはわかっていますが、それは最後の手段にしたいと思います。ヘルプやリードをいただければ幸いです。
ありがとう、ジョシュ
automake - クリーニング時にディレクトリを削除する automake ルールを .mk ファイルに作成するにはどうすればよいですか?
make clean を実行するときに別のディレクトリを削除したいのですが、ルールでそれをコーディングする方法がわかりません。
私が試してみました
しかし、それはうまくいきませんでした。
私も試しました
しかし、それもうまくいきませんでした。
任意の提案をいただければ幸いです。
testing - cxxtest スイートは実行時に動的に拡張できますか?
CxxTest Suiteを追加のテスト項目で動的に拡張したいと考えていますが、コンパイル時にすべてのテスト シナリオを利用できる (ハードコードされている) 必要があることがわかりました。
私のシナリオは、テストする 20 以上のメソッドを持つかなりかさばる C++ クラスを持っているということです。このクラスは、40 以上の異なるデータ セットに対してテストする必要があります。これらのデータセットは、パラメーターを介して制御されるクラス コンストラクターを介して取得されます。
私の主な目的は、異なるデータ セットに対して同じ 20 個のテスト ケースを書き直さないようにすることです。データ セットのリストを含む制御ファイルを使用し、同じテスト スイートに対して異なるフィクスチャを作成したいと考えています。
Q1) テスト スイートに動的に (実行時に) テストを追加するにはどうすればよいですか?
Q2) 実行時にフィクスチャを動的に追加できますか? 動的フィクスチャを可能にするより良いテスト スイートはありますか?
Q3) これは TDD 手法が回避するものですか? 誰もが TDD テクニックの優れた要約を手に入れました。
ありがとう、
-- J・ジョーゲンソン --
c++ - Python 以外のテストを使用した py.test (具体的には、cxxtest を使用)
私は、MPI ベースの C++ 数値計算アプリケーションを開発するチームで働いています。このグループは、個々の単体テストまたは小さなスイートを構築するために cxxtest を使用しますが、1) cxxtest の通常の機能を使用してディレクトリ間で集約することにはいくつかの複雑さがあり、2) mpirun を起動することによって「外部から」実装するのが簡単な統合テストがいくつかあります。単一の Python スレッド。
これをまとめる接着剤として py.test を使用したいと考えています。これは、Python 以外のテストを実行できると宣伝しているためです (鼻に飛びつくと確信できました)。
これを行うためのベストプラクティスを誰かに教えてもらえますか? 繰り返しますが、これは py.test の宣伝されている機能の 1 つであるように思われるため、当初想定されていた方法で実行したいと考えています。
ありがとう、
エリ
c++ - 別のクラスの静的関数に依存するクラスのテスト
現在、静的関数のみを持つ別のクラスを使用するクラスに取り組んでいます。
クラスをテストするまで、すべてがうまくいきました。
問題の簡単なコード例を次に示します。
クラス A が正しく動作している (そして単体テストでテストされている) と仮定して、クラス B のrunSomething関数を確認したいと思います。
私の最初のオプションは、内部クラス (このサンプルでは - クラス A) のモックを作成することですが、その場合、静的関数しかないため、A から継承するものは何もありません。
2 つ目のオプションは、A クラスの呼び出しを B 内のプライベート関数にカプセル化して、戻り値を制御できるようにすることです (ただし、このオプションを選択すると、処理が少し複雑になります)。
私の質問は次のとおりです。静的クラス/関数に依存する C++ クラスをテストするための、現在のオプションよりも優れた方法はありますか?
前もって感謝します、
タル。
c++ - C++ で 2 つの ostream オブジェクトを比較して等しいかどうかを確認するにはどうすればよいですか?
クラスで左シフト演算子をオーバーロードすると、出力が正常に機能します。たとえば、 cout << obj; という行がある場合です。コンマで区切られたフィールドを出力します。
この操作のテスト ケースを書きたいのですが、返された結果を cxxtest で期待される結果と比較する方法がわかりません。次のことを試しましたが、うまくいきませんでした。
別の cxxtest 操作を使用するか、TS_ASSERT_EQUALS のパラメーター受け渡しメカニズムを変更する必要がありますか?
次の行を出力すると、同じ結果が得られることに注意してください。
注: TS_ASSERT_EQUALS が失敗するため、プログラムをコンパイルしようとすると、一連のコンパイラ エラーが発生します。