問題タブ [boost-test]
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++ - 古いバージョンのboost.testの問題
boost.test
ブースト 1.33.1を使用してリモート システムで使用しようとしています。私のPCでは、http://www.boost.org/doc/libs/1_42_0/libs/test/doc/html/tutorials/hello-the-testing-world.htmlからのこの小さな例が機能します:
しかし、リモート システムにはファイルunit_test.hpp
が存在しません。私のPCでは、ファイルunit_test_framework.hpp
は単純です:
そしてそれはメインシステムに存在します。だから私はインクルードを次のように変更しようとしました:
しかし、コンパイラは言う:
これは何ですか?それを解決する方法は?
c++ - 静的ライブラリでのBoost.Testテスト
ユニットテストにBoost.Testを使用しています。
いくつかの理由から、ユニットテストケースをさまざまな静的ライブラリに記述したいと思います。
問題は、これを行うと、自動レジストラが機能しないことです。
たとえば、次のようなものがある場合:
次に、main.oをlibFooTests.aにリンクして、最終的なバイナリを実行すると、次のようになります。
Test setup error: test tree is empty
ソースコードから直接バイナリを作成すればすべて問題なく動作しますが、自動登録を使用して静的ライブラリ内に単体テストを記述できなくなります。
これを達成できますか?
定義する必要のあるマクロはありますか?libFooTests.aからエクスポートする必要のあるシンボルはありますか?
ありがとう!
c++ - QTest を他のフレームワークと比較する
C++ の一般的な単体テスト フレームワークと Qt の QTest を比較できますか?
(cppunit、Boost テスト、Google テストなど)
メリット・デメリットは?ありがとうございました。
注: GUI テストは私たちにとってあまり重要ではありません。
unit-testing - ブーストテストからの出力なし
ブースト テスト ライブラリを使用して単体テストを実装しようとしています。ブーストサイトでマニュアルを読むことから始めました。この後、既存のプロジェクトの 1 つで簡単なテスト プログラムを作成します。私が直面している唯一の問題は、テスト結果を見ることができないということです。私は何か間違っていると確信しています:)しかし、私はそれを理解することができません。以下は私のプロジェクトの詳細です
これにはVisual Studio8を使用しています:MyProject.slnという名前のソリューションがあります
他のプロジェクトと一緒に、MyDLL.vcprojという名前のプロジェクトがあります(このプロジェクトのタイプはDLLです)
MYDLL proj の他のファイルとともに、新しい cpp ファイル名MyTest.cppを追加します。ファイルには次のコードが含まれています。
MYDLL プロジェクトのプロパティ シートで次の変更を行います
マニュアルに記載されているコンパイルの詳細をすべて読みましたが、まだ出力を取得できません。理想的には、Boost テストをスタンドアロン ライブラリ (UTF の動的ライブラリ バリアン) として使用したいと考えています。
c++ - Boost :: TestでDLLをテストしますか?
C ++でDLLを開発していて、BoostTestLibrariesを使用してそのDLLの単体テストを実行したいと考えています。Boostテストのマニュアルをよく読みましたが、私は新しいので、次の質問があります。
DLLを開発しているのと同じVCプロジェクトにテストクラスを追加する必要がありますか?理想的にはこれを実行したいのですが、DLLにはないので混乱しています。一方、Boostテストを実行するmain()
には独自のテストが必要です。main()
では、このシナリオでは、ブーストテストの出力はどこに行きますか?(実際、私はこれを実際に実装しましたが、出力は表示されません:(そして問題を理解するのにほぼ2日を費やしましたが、成功しませんでした)
よろしく、
ジェーム。
c++ - 実行するBoostユニットテストを設定する方法
ブーストテスト、特にブーストユニットテストを使用しようとしています。
主な関数がどのように生成されて呼び出されるのかはっきりとわかりません。チュートリアルでは、モジュールを定義してテストを作成するだけです。
#define BOOST_TEST_MODULE EnfTraderTest
BOOST_AUTO_TEST_CASE(CalculateExpectedPriceTest){BOOST_ERROR("Oops");}
しかし、このテストを実行するようにプログラムにどのように言うのですか?私はすでにメイン機能を持っています。メイン機能からテストを実行するかどうかを決定したいと思います。
c++ - boost::test::unit_test の CoInitializeEx
先日、Windows プラットフォーム (Visual Studio 2010 Premium を使用) での C++ のテスト駆動開発について知る必要があると判断しました。
ブーストのユニットテストフレームワークを試すことに決める前に、私は周りを見回しました。私は、boostpro.com のリリースを選択したと言わざるを得ません (私の記憶が正しければ、現在は 1.44 です)。これには静的ライブラリのビルドがあるため、テストでは DLL を使用しません。
Boost の単体テストのドキュメントでは、コードをテスト スイートから分離することについて説明していますが、これは合理的と思われます。ただし、別のテスト スイート プロジェクトからコードを参照するという問題に対処する必要があります。
だから私はテストしたいライブラリプロジェクトを持っています(しかし、.exeプロジェクトを参照できるテストをどのように書くのかまだわかりません...)
そこで、単体テストと呼ばれるソリューションで別のプロジェクトを作成しました。次のコードを追加しました。
「クラッシュ」ライブラリ プロジェクトの出力に静的にリンクし、次のビルド後のイベントを追加して、ビルド後のレポートを取得しました。
ビルド後の出力は次のようになります。
スレッドの COM アパートメントを初期化していないため、EncoderAvailable テストが失敗すると予想していました。自動テストを使用できないと仮定し、代わりに自動テストをテストに置き換える必要があります。メイン関数で自分自身を手動で定義し、メイン関数で CoInitializeEx() 呼び出しを行います。
ここで、エントリ ポイントを定義して独自の関数を登録できることを読んだので、これを試してみました。
ビルド出力は次のとおりです。
そのテストの失敗は、次の単純な関数である最初のテスト LameEncoderAvailable で失敗します。
CoInitializeEx() 呼び出しを行う正しい場所を誰か教えてもらえますか - テストごとに 1 回だけ行うべきではないと思います - スレッドごとに 1 回だけ行う必要があります...
exe プロジェクトのテストに関しては、別の main.cpp (testmain.cpp など) を指定し、実際の main.cpp をビルドから除外してコードにアクセスできると思います。誰かがそれに対するよりエレガントな解決策を知っているなら、私はそれについて聞きたいと思っています...
c++ - ユーザー入力を取得する関数のブースト テスト ケース
std::cin 経由でユーザー入力を受け取る関数があります。
正規表現と照合して、対応するデータ構造を作成します。次に、関数はこのデータ構造を返します。
私は boost.test を使用しており、いくつかの入力が与えられたときに出力データ型が正しいことを確認する単体テストを作成したいと考えています。ただし、入力が関数の引数として渡されないため、どうすればよいかわかりません。
編集:標準入力を介して関数に文字列を供給するブースト テスト ケースを作成する簡単な方法はありますか?
c++ - boost :: test::unit_testでメモリリークを見つける
この質問は、boost :: test::unit_testに関する前の質問の続きです。
単体テストを作成し、単体テストを作成しました。ビルド出力は次のとおりです。
経験から、メモリリークを説明する出力は、CRTメモリリーク検出の使用によるものであることがわかっています。
通常、割り当てがソースコードのどこにあるかを検出するには、エントリポイントの先頭に次を追加します。
ただし、boost :: test :: unit_testは独自のエントリポイントを定義しているため、これらの行を追加できません。これらの行をフィクスチャに追加しようとしましたが、成功しませんでした。また、テストコード内にこれらの行を追加しようとしましたが、成功しませんでした。これらの変更を試してみると、次の出力が得られます。
その-ve番号は0x80000003に変換されます(1つ以上の引数が無効です)。
ソースコード/テストのどこでこれらの2つのメモリリークが発生する可能性があるかを検出する方法を誰かが提案できますか?
好奇心旺盛な方のために、これが私のテストです: