問題タブ [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++ - Windows でコマンド ラインを使用して UnitTest++ を実行するにはどうすればよいですか
私は UnitTest++ が初めてで、Windows でコマンド ラインを使用して動作させるのに問題があります (コマンド ラインを使用してのみ動作させる必要があります)。
私はすでにソリューションをビルドしており、ライブラリ (UnitTest++.vsnet2005) を持っていますが、ビルドしようとすると、「UnitTest++.h: そのようなファイルまたはディレクトリはありません」と表示されます。
これは私が使用しているコマンドです: g++ -o TestRowMajor TestRowMajor.cpp -L"C:\Users\myUser\Documents\Proyects\Tools Tests\UnitTest++\tests\unit" -lUnitTest++
これは私がテストしようとしている単純なコードで、彼らのWeb サイトにあるものです
事前に感謝します。
unit-testing - Linking Error with UnitTest++
I am getting an odd Unit Test ++ linking error using Xcode as my ide. Now I did set the project up with two targets. one target that will do the test the other will do nothing for now.
Note I did link the library and ran the simple working example from the tutorial. and I compiled it using gcc 4.2.1 from macports.
"std::string::c_str() const", referenced from: UnitTest::MemoryOutStream::GetText() const in libUnitTest++.a(MemoryOutStream.o) "std::basic_ostringstream, std::allocator >::str() const", referenced from: UnitTest::MemoryOutStream::GetText() const in libUnitTest++.a(MemoryOutStream.o) "std::basic_ostream >::~basic_ostream()", referenced from: construction vtable for std::ostream-in-UnitTest::MemoryOutStream in libUnitTest++.a(TestRunner.o) construction vtable for std::ostream-in-UnitTest::MemoryOutStream in libUnitTest++.a(Test.o) "std::basic_ostream >::~basic_ostream()", referenced from: construction vtable for std::ostream-in-UnitTest::MemoryOutStream in libUnitTest++.a(TestRunner.o) construction vtable for std::ostream-in-UnitTest::MemoryOutStream in libUnitTest++.a(Test.o)
g++ - UnitTest++およびg++-ライブラリへの相対パス
このディレクトリツリーに従って、UnitTest++をプロジェクトで動作させようとしています。
Projectディレクトリにいるときにg++でコンパイルしようとしています。私のtest.cppファイルには、UnitTest++入門コードが含まれています。
私は次のことを試しました:
私がよく理解しているなら、-Lは静的ライブラリへのパスを与えることです。-l(小さいL)はライブラリ名を表し、-I(大文字のi)はインクルードパスを表します。
2つの異なる結果が得られます。/ usr / bin/???にlibが見つからないことを通知します。または、unittest::*への未定義の参照があることを教えてくれます。
ライブラリへの相対パスを指定しているため、コンパイルできませんか?複数のディレクトリでg++を使用するのは初めてで、Makefileで機能させる前に、g++がどのように機能するかを理解しようとしています。
[編集]:ライブラリとヘッダーをリンクする前に、test/test.cppパラメーターを指定する必要がありました。だから、これはうまくいきました:
c++ - テストランナー実行可能ファイルで静的ライブラリからテストをリンクする方法は?
次のように整理された Visual Studio ソリューションがあります。
ProjectB には、次のような 2 つのファイルが含まれています。
この:
テストスイートを含むいくつかのファイルと同様に、例えば:
ProjectC は次の 1 つのファイルで構成されます。
テストとテスト ランナーを分離した理由は、同じテストを使用してコード カバレッジを分析する別のプロジェクトがあるためです。クロスプラットフォームではないため、テスト ランナーは分離しておく必要があります。
問題は、ProjectC をコンパイルして実行すると、実際にはテストが実行されないことです (UnitTest++ は実行されますが、テストはゼロです)。これは、ProjectC が ProjectB からのテストに関連するシンボルを参照しないためです。したがって、リンカーは ProjectB.lib からのオブジェクト ファイルをリンクしません。
ドキュメントに従って、ProjectB が実行可能ファイルである場合、この問題は発生しないと理解しています (おそらく、リンカーがすべてのオブジェクト ファイルをリンクするため)。
一般的な考え方は、RunAllTests() を呼び出すエントリ ポイントを含む 1 つの Main.cpp ファイルを保持することです。
その後、通常はテスト スイートごとに 1 つの新しい .cpp ファイルを自由にコンパイルしてリンクできます。
各 Test*.cpp ファイルには、テスト コードが関連付けられた 1 つ以上の TEST マクロの呪文が含まれます。Main.cpp と Test*.cpp の間にソースレベルの依存関係はありません。TEST マクロは、RunAllTests() が同じ最終的な実行可能ファイルにコンパイルされたすべてのテストを見つけるために必要な登録とセットアップを処理するためです。
ProjectC が参照できるヘッダー ファイル内のすべてのテストを宣言することなく、この問題を解決するにはどうすればよいですか (UnitTest++ の使いやすさが失われます)。Visual Studio で気付いた 1 つの可能性は次のとおりです。
プロジェクト設定 > 構成プロパティ > リンカー > 入力 > シンボル参照を強制する
ただし、新しい単体テストを作成するたびに、すべてのシンボルを追加する必要があるのはかなり面倒です。ProjectB.lib の内容全体を強制的に含める方法はありますか? それとも、コードベースのソリューションでしょうか?
編集:私が探しているのは、このようなものですが、Visual Studio 用です。
c++ - これは VS2012 の最適化のバグですか?
ここで VS2010 から 2012 への更新に取り組んでいます。不適切なコード生成またはプログラミング エラーが原因で失敗する単体テストがいくつかありますが、どちらが原因かわかりません。私が投稿しているコードは元のものとほぼ同じで、問題も再現しています。
これがケースです。すべてのクラス/実装は別のファイルにあります。
上記はdllにあり、exeでunittest ++を使用してテストされています(CHECK_THROW
わかりやすくするためにマクロを拡大しましたが、何も変わりません):
バグであるかどうかにかかわらず、すぐに使用できる回避策、またはこれを回避するための一般的なルールはありますか?
editの実装を追加しました。DoStuff()
代わりにそれを呼び出してDoIt()
も問題ありません!
編集これにより、ユニットテストフレームワークまたはその他のコードが問題である可能性、またはconst参照によってキャッチされる可能性、またはruntime_errorが例外から派生したことを知らないコンパイラーの可能性を除外する必要があります。unittest マクロを拡張して実際に何をするかを示し、このソース ファイルだけを含む新しいプロジェクトを作成しました。
出力はnot good
です。
c++ - XCode の iOS プロジェクトで UnitTest++ がクラッシュする
UnitTest++のソースをインクルードすると、C++ コンストラクトによってキャッチされないtry { } catch { }
(または例外処理自体が壊れていることを示す)クラッシュが発生するようです。
コードはエラーなしで正常にコンパイルされますが、実行時にさまざまなクラッシュが発生します。
たとえば、FixturesWithThrowingDtorsAreFailures
組み込みテストは で失敗しlibc++abi.dylib: terminate called without an active exception
ます。このエラーについて私が見つけたのは、例外処理プロセスで何か問題が発生したことを意味するということです。
これは Obj-C++ の動作の特殊性ですか? 他の誰かが UnitTest++ を機能させようとしましたか?
c++ - AMOP の基本的な使い方、C++ での関数のモッキング
send および recv ソケット機能を広く使用するサーバークライアントモデルを使用して、分散プロジェクトを作成しています。これらの関数の動作は反対側に依存するため (たとえば、サーバー側にある場合、クライアント側が正しく動作する必要があります)、反対側とは別に各側をテストする方法が必要です。これまでのところ、関数のモックが従うべき正しいアプローチである可能性があることがわかりました。
また、そのプロジェクトでunittest ++を使用しているため、 AMOPが最適なモッキング関数フレームワークであることがわかりました。しかし、AMOPライブラリのドキュメントを読んだ後、それがどのように機能するのか明確なアイデアが得られませんでした。
つまり、単体テスト ファイルでsendto関数をモック関数に変更する必要があります。これにより、サーバーが内部でsendtoを呼び出すたびに、モック関数が呼び出されるようになります。
macos - Mac OS X で C++11 と CMake を使用して UnitTest++ リンカ エラーを解決するには?
CMake を使用して C++11 を使用するライブラリのテストをコンパイルしようとしています。Ubuntu で C++11 を使用して UnitTest++ を使用することに成功しましたが、Mac OS X でリンカー エラーが発生します。
CMake では、APPLE のリンカ フラグとライブラリは次のようになります。
これでコンパイルすると、次のようなリンカ エラーが発生します。
これが完全なペーストです。