問題タブ [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++ - UnitTest ++を使用してテストからプライベートクラスフィールドにアクセスするにはどうすればよいですか?
UnitTest ++を使用して単体テストをコーディングするときに、厄介な問題に直面しています。プライベートメンバークラスのフィールドにクリーンな方法で(またはおそらく何らかの方法で)アクセスする方法を考えています...)
これまでに、テスト対象のクラスから派生したクラスフィクスチャを使用して保護されたメンバーにアクセスするソリューションがあります。次のコードはアイデアを示しています。
それでも、一部の構成では継承に関連する問題が発生する可能性があり、とにかく、保護されたメンバーだけにアクセスしてテストできるため、これはあまりクリーンではないと思います。
テストクラスを友達として宣言しようとしましたが、UnitTest ++によって特別な方法で作成されているため、まだそれを行うことができませんでした。
テストクラスをテスト中のクラスの友達にする方法を知っている人はいますか?
この問題にもっと簡単に、または別の方法で取り組む別の方法はありますか?
よろしくお願いします。
c++ - Unittest++: 複数の可能な値のテスト
現在、C++ で単純なレイ トレーサーを実装しています。OrthonormalBasis という名前のクラスがあります。これは、1 つまたは 2 つの指定されたベクトルから 3 つの直交単位ベクトルを生成します。次に例を示します。
Unittest++ フレームワークですべてのメソッドをテストしています。問題は、有効な正規直交基底に対して複数の可能な解があることです。たとえば、このテスト:
ベクトル v と w は負の 1 を持つこともあり、それでも有効な正規直交基底を表しているため、成功することも失敗することもあります。複数の期待値を指定する方法はありますか? または、それを行う別の方法を知っていますか?
メソッドをデバッグするために、実際の値と期待される値を標準出力に出力して、このソリューションが機能しないようにすることが重要です。
c++ - ライブラリを C++ テストに含めるように構成する
テスト ファイルで UnitTest++ ライブラリを利用したいと思います。ただし、コンパイル時にライブラリを含めるのに苦労しています。だからここに私の現在のディレクトリ構造があります:
UnitTest++ 入門ガイドを使用して、ライブラリのセットアップを取得しました。ここに test.cpp があります:
そして、私は現在コンパイルしようとしています:
私は現在ld: symbol(s) not found
、最後に大量の出力を取得しています。では、このプログラムのコンパイル時に UnitTest++ ライブラリを適切にインクルードするにはどうすればよいでしょうか? 私は Mac を使用していますが、Linux マシンを使用している人々がこれらの同じテストを簡単に実行できる方法があればいいのにと思います。
これで十分な情報が得られることを願っています。そうでない場合は、お知らせください。
c++ - UnitTest++ は、閉じることができないコマンド ウィンドウを作成します
VS2008 でこのように UnitTest++ を使用するためのセットアップがあります。
単体テストのコンソール出力を表示するコマンド ウィンドウがハングすることがあります。
ウィンドウの移動、サイズ変更などはできますが、閉じることができません。タスク マネージャーの [アプリ] タブにはウィンドウが表示されますが、[プロセス] タブにはウィンドウが表示されず、[プロセスに切り替える] も機能しません。デバッグを停止するか、VS を閉じることも役に立ちません。VS がこのウィンドウを制御できなくなったようです。
このコマンド ウィンドウが失われると、コンピューターをシャットダウンできなくなり、かなり面倒です。
ヒントはありますか?
c++ - UnitTest ++はフィクスチャを複数回構築しますか?
私はUnitTest++でいくつかの単体テストを書いていますが、いくつかの共通のリソースを共有する一連のテストを書きたいと思っています。これはTEST_FIXTUREセットアップで機能するはずだと思いましたが、テストごとに新しいフィクスチャを構築しているようです。サンプルコード:
私は何か間違ったことをしているに違いないと感じています。フィクスチャを持つことの全体的なポイントは、セットアップ/ティアダウンコードが1回だけ発生するようにすることだと思っていました。私はこれについて間違っていますか?それをそのように機能させるために私がしなければならないことが他にありますか?
visual-studio-2008 - Hudson での xUnit テスト出力の構成
ハドソンで簡単な PoC プロジェクトを行っています。PoC には、UnitTest++ によって記述された単体テストがあり、結果を XML として出力し、xUnit が使用して jUnit 形式に変更します。
ここに関連する顕著なものがあります
- MSBuild を使用して 2008 ソリューションをビルドするようにプロジェクトを構成しています。
- プロジェクトには、ビルドする dll と、ビルド後のステップとして実行される単体テストの両方が含まれています。
- Hudson のワークスペースを c:\develop\money (Money はプロジェクトの名前) に設定し、Hudson コンソールでワークスペース フォルダー、ソリューション ファイル、および出力フォルダー (/bin、/doc など) を確認できます。 )。
- テスト コンソール アプリは、そのファイル「money_unit_tests.xml」を、事前に作成されたフォルダー「reports」(c:\develop\money\reports を作成) に出力します。
ただし、ワークスペースが固執していないようです。ワークスペース ディレクトリを送信するとフォルダが表示されますが、ページをリロードすると「ディレクトリにファイルがありません」というメッセージが表示されます。
私が設定したように Hudson が C:\Develop を使用しないのはなぜですか?
どうすれば変更できますか?
変更できない場合、これらの変更を軽減するにはどうすればよいですか? (xml の出力を C:.hudson にハードコーディングしたくはありません...)
c++ - 異なるビルドシステムを使用する他のライブラリを含むCMakeでプロジェクトをビルドする
私はC
、ライブラリ、C++
GUI、およびCmake
ビルドの管理に使用するオープンソースプロジェクトに取り組んでいます。このプロジェクトは開始されたばかりで、ファイルは2、3個しかありません。makefiles
Linux開発環境で正常に生成でき、WindowsではVisual Studio
CMakeを使用してプロジェクトファイルを生成できます。これまでのところ、すべてうまく機能しています。
プロジェクトが進化しているので、私はテストフレームワークが必要な段階にあります。UnitTest++
私は、すべての一般的なプラットフォームでうまく機能する良い経験を持っています。
問題は、UnitTest++
ビルドを統合する手がかりがないことですCMake
(Linuxではmakefileを使用し、WindowsではVisual Studioプロジェクトファイルを使用できます)。UnitTest++
コードをビルドする前に、ライブラリを生成するためにファイルをビルドする必要があります。LinuxとWindowsで動作する方法でCMakeでこれを指定するにはどうすればよいですか?
c++ - UnitTest ++で単一のテストを実行するにはどうすればよいですか?
UnitTest ++で単一のテストを実行するにはどうすればよいですか?
UnitTest++をそのまま実行しています。私のmain
関数は次のようになります:
UnitTest::RunSingleTests("MyNewUnitTest");
デバッグのために、の代わりにのようなものを書きたいと思いUnitTest::RunAllTests();
ます。UnitTest ++はそのような関数を提供しますか?もしそうなら、構文は何ですか?
flash - AlchemyとUnitTest++を連携させる
UnitTest ++を使用するプロジェクトでAdobeAlchemyを使用しています。単体テストは、ビルドプロセスの一部として実行されます。
UnitTest ++は、Alchemyに実装されていないC ++の機能、つまり静的クラスのインスタンス化や関数の呼び出しによるグローバル変数の初期化に依存していることがわかりました。
UnitTest ++の優れている点は、実行するテストのリストにテストを追加することを覚えておく必要がないことです。これは、マクロマジックを使用してテストケースクラスを作成し、それらをテストのグローバルリストに追加することで自動的に行われます。したがって、この:
これになります:
ここで、のコンストラクターはテストのグローバルリストにListAdder
追加されます。testMyTestInstance
問題は、Alchemyのバグのため、ListAdder
コンストラクターが実行されないため、テストのリストが常に空になることです。
コンストラクターが呼び出されないことを証明するために、ListAdder
コンストラクターが呼び出されたときにクラッシュするようにインストルメント化できます。
これは、ネイティブにコンパイルするとクラッシュしますが、Alchemyでコンパイルするとクラッシュしません。
それを確認するためのそれほど抜本的な方法は、printfを追加することです。
ネイティブにコンパイルすると、テストごとに「ListAdder ...」が表示されますが、Alchemyでコンパイルすると、何も出力されません。
私の質問は、テストが実行されるようにUnitTest ++を変更するにはどうすればよいですか?ここで説明されている回避策は当てはまらないようです。
c++ - .cpp & .h ファイルの場所を lcov に伝えるにはどうすればよいですか?
私のソースとビルド ツリーは次のようになります ( Makefile to put object files from source files different directory into a single, separate directory?を参照してください)。
gcov -o obj/ ../src/Foo.cpp
次に、とを実行して、テスト ディレクトリに .gcov ファイルを生成できますgcov -o obj/ ../src/Bar.cpp
。
しかし、実行すると次のlcov -d obj/ -c -o FooAndBarTests.lcov
ようになります。
そして、実行すると次のようgenhtml FooAndBarTests.lcov
になります。
.cpp と .h ファイルの場所を lcov と genhtml に伝えるにはどうすればよいですか?