単体テストのライブラリとツールを評価するときに何を探す必要がありますか?


8

私はすぐにプロジェクトを開始するための新しい単体テストツールを選択しています。それらはたくさんあります!

私が持っている基本的な要件は、少なくともWindowsとLinuxでテストを実行でき、C ++ / C ++ 03互換であり、テストを並行して実行できることです(たとえば、マルチコアプロセッサを利用するため)。コマンドラインから実行することができます。しかし、これらはかなり広い要件であり、分野を絞り込んでいません。

それを試すために、さまざまなタイプの実装の潜在的な落とし穴と落とし穴を調べています。たとえば、Pythonなどの高レベル言語で単体テストエンジンを使用したい場合でも、C単体テストのような形式の出力を生成できますか?ここでの私の主な目的は、C ++とPythonの両方の結果テストに同じストレージツールとレポートツールを使用することです。

また、テストを実行するために特定のエンジンが必要なのか、それとも継続的インテグレーションエンジン(buildbot)に統合するのに十分なのかについても考えています。

上記の2つの懸念は有効ですか?単体テストエンジンを評価するとき、他に何を心配する必要がありますか?


1
こんにちは、ディディエトロセットです。ユニットテストエンジンの推奨質問と間違われないように、質問を少し修正しました。そうでなければ素晴らしい質問です!

回答:


3

私はGoogle TestBoost Testの両方を使用しました。どちらもxUnitフレームワークであり、UnixとWindowsで動作し、成熟しています。モックフレームワークも欲しかったので、Google Mockが原因でGoogle Testを使用することになりました。どちらもビルドボットでうまく機能するはずです。

個人的には、単体テストフレームワークを最小限かつ高速にする必要があります。多くのテストが必要なので、妥当な時間枠で実行してもらいたい。個人的には、メガツールの代わりに言語のメインフレームワークを使用したいのですが、それは個人的なものです。必要に応じて、継続的な反復テストを確認できます。ファイルを保存するたびに、そのファイルが依存するテストケースが自動実行されます。

ユニットテストに常にインターフェイスクラスを記述して、フレームワークをすばやく効果的に変更できるようにすることができます。



2

私の経験には、CruiseControl.NETとTeam Foundation Buildが含まれます。私自身も.NET開発者です。これらは私の経験からのものであり、ビルドプロセスの一部としてテストした経験のみが含まれます。したがって、環境に一致しない場合は、申し訳ありません。

また、テストを実行するために特定のエンジンが必要なのか、それとも継続的インテグレーションエンジンに統合するのに十分なのかについても考えています。

チェックインごとにビルドを行う場合、前のビルドの実行が完了する前にビルドをトリガーすることができます。このような状況にどのように対処しますか?たとえば、テストスイート全体を実行するのに30分かかり、コードが15分ごとにチェックインされる場合、いくつかのビルドをスキップしますか?一部のテストをスキップしますか?それらを積み重ねて、順番にビルドし、5時間前のチェックインでビルドを中断したボブに戻りますか?

Team Foundationビルド、2010でのビルドとテストに複数のコアを使用できます(以前のバージョンでは、C ++ビルドにのみ複数のコアを使用できました)。CruiseControl.NETは個別のスレッドを実行できますが、ドキュメントを読むと、各プロジェクトは独自のスレッド上にある可能性がありますが、プロジェクトごとに複数のスレッドを持つことはできないようです(私は間違っている可能性があります)。私が作業した環境でビルド用のマルチコアマシンを使用したことがないので、それらがどれほど良い/公平/悪い(または私が間違っている)かについて話すことはできません。

以前のある雇用者では、ビルドにPythonスクリプトを含めましたが、Pythonをテストするためのテスト設定はありませんでした。NANTは.NETコンポーネントに使用されました。

また、テストを実行するために特定のエンジンが必要かどうかも疑問に思っています

私はそれをする時間はありませんでしたが、以前の雇用者(「シュリンクラップ」ソフトウェアを販売していました)には、オペレーティングシステム固有(および場合によってはサービスパック固有)のバグがたくさんあったため、私の目標の1つは複数のテストをセットアップすることでしたOSが異なるマシン(32ビットと64ビットの両方、およびXP以降のデスクトップおよびサーバーWindowsのさまざまな種類すべて)。ビルドマシンはシンプルで古いWinXPマシン(または仮想マシン)でした。これは、マネージャーが許可したすべての「ハードウェア」でした。代わりに、すべてのテストがビルドマシンで実行されました。また、単体テストのコレクションとして検証スイートを設定しましたが、これらはマイナーアップデートでは実行されませんでした。


@Sardathrion、変更履歴をチェックして、回答を投稿した後に「Linuxの部分」が追加されました。
Tangurena

変更履歴を表示するには、質問の下にある「編集されたx時間前」のリンクをクリックします。
Tangurena

@Tanguerna:ああ、説明してくれてありがとう。反対票を削除できるように、質問を少し編集していただけませんか?投票はロックされているように見えます。
サルダトリオン-

@サルダトリオン、完了。
Tangurena

完了して賛成-Linuxの要件が後で追加されたというメモを残してください。^ _〜
SEの乱用に対する- Sardathrion
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.