問題タブ [catch2]

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 に答える
571 参照

c++ - Catch2 - 異なるテスト ファイルの異なるモック データをシングルトンに入力する

C++ プロジェクトで単体テストに Catch2 を使用しています。シングルトン クラスがあり、別のテスト ファイルで使用されています。たとえば、あるファイルがシングルトン自体をテストし、別のファイルがシングルトンと別のコンポーネント間の相互作用をテストしている場合があります。そのため、シングルトン クラスにテスト ファイルごとに異なるモック データのセットを設定する方法があるかどうか疑問に思っていました。

私の知る限り、私には2つの方法があるようです。

  1. テスト ケースとセクションの使用

TestA.cpp

TestB.cpp

ただし、これはセットアップ関数が各テスト ファイルで 2 回実行されることを意味します。これは必要ではなく、回避したいと考えています。また、すべてのテストを 1 つの SECTION/TEST_CASE にまとめる必要もありません。

  1. の使用Listeners

Listener独自のクラスを作成して登録し、メソッドとメソッドをオーバーライドtestCaseStartingできることを理解していますtestCaseEnded。これはすべての TEST_CASE に当てはまるようですが、TestA と TestB に異なる設定をしたいと考えています。

したがって、各テストファイルの最初と最後にセットアップと分解機能を実行するのと同じように、各テストファイルでシングルトンクラスを別々にセットアップできるより良い方法はありますか?

0 投票する
3 に答える
1104 参照

c++ - Catch2 使用時の未解決の外部シンボル エラー

Visual Studio で Catch2 単体テストを実行しようとしています。練習用に小さなテスト プロジェクトを作成しました。このテスト プロジェクトをコンパイルしようとすると、リンカー エラーが発生します。現在、このリンカー エラーを診断しようとしていますが、Catch2.hppヘッダー ファイルには数千行のコードが含まれています。私の願いは、Catch2 や単体テスト全般に詳しい人が問題を診断できることです。

このプロジェクトを作成したプロセスについて説明します。新しいソリューションで新しいプロジェクトを作成しました。以下にリストされている4つのファイルがすべて同じディレクトリにあります。

テストしたいクラス:

テスト:

テストを実行する主な機能:

Catch2 テスト フレームワーク:

[ローカル Windows デバッガー] ボタンを使用して Visual Studio でこのコードをコンパイルしようとすると、多数の未解決の外部シンボル リンカー エラーが発生します。Catch2 が「部分的にコンパイルされている」ことをどこかで読んだと思います。それと何か関係があるのか​​もしれませんが、私にはわかりません。このガイド ( StackOverflow: Visual Studio で Catch2 を使用した単体テストのベスト プラクティス) に従うことでうまくいきましたが、上記の小さな例が正常にリンクされない理由を理解しようとしています。

完全を期すために以下のリンカーエラーを含めましたが、おそらく質問には必要ないと思います。

これらのエラーの原因は何ですか? catch.hppソース ファイルと同じプロジェクトを維持しながら、これらのエラーを修正するにはどうすればよいですか?

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

c++ - testthat (& Catch) は R CMD チェックで xml2 ライブラリが見つからないことを訴えます

R パッケージ ( https://github.com/beerda/hexmatrix )をテストするために testthat を使用しています。最近、C++ のテストを開始testthat::use_catch()しました。C++ Catch を使用した単体テスト用のパッケージをセットアップする必要がある を実行し、いくつかのテストを作成しました。によって実行された場合、テストは正しく実行されdevtools::test()ます。ただし、R CMD checkまたはを実行しようとするdevtools::check()と、次のエラー メッセージが表示されます。

xml2 パッケージがインストールされ、rlang::check_installed("xml2") が TRUE を返します。

何らかの形で接続されているかどうかわからない: コマンドを手動で実行しようとするとrun_cpp_tests("hexmatrix")、次のエラーが表示されます。

何がうまくいかないのか誰にも分かりませんか?前もって感謝します。