3

現在、次の問題が発生しています。

Visual Studio 2015 に含まれているネイティブの Microsoft 単体テスト フレームワークを使用して、単体テストをネイティブの C++ アプリケーションに導入しましたMicrosoft::VisualStudio::CppUnitTestFramework

ビジュアル スタジオ内でユニット テストを開始するには、画像 1 に示すように を使用します。 (画像 2 に示すように) にa をTest-Explorer追加することで、属性による並べ替えとフィルター処理が可能になります (画像 3 に示すように)。method attributeTest-MethodTest-Explorer

ここに画像の説明を入力

これはすべて問題なく動作します。これらの単体テストを継続的インテグレーション システム (CI) に実装しようとしたときに、問題が発生し始めました。

Unit-Tests をコンソールから開始するvstest.console.exeには、次の場所にある を使用しますC:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe。公式ドキュメントはここにあります。

次のスクリーンショットは、コンソールを使用したときにテストがどのように成功するかを示しています。 ここに画像の説明を入力

ロガーを追加してファイルを .trx に出力することもうまく機能します。ただし、フィルターを適用して特定の属性を持つテストを決定することは機能しません。/TestCaseFilter:ドキュメントによると、 -switchを使用すると、そのようなことが可能になるはずです。ただし、次のスクリーンショットは結果のエラーを示しています。

ここに画像の説明を入力

「無効なプロパティ ( TakesLong ) が 1 つ以上含まれているため、フィルターに一致するテストはありません。有効なプロパティ (TestCategory、Priority、FullyQualifiedName、Name) を含むフィルター式を指定して、再試行してください。」

誰かがこの問題を知っているか、それを修正する方法を知っていますか? 最終的な目標は、特定のテストを除外できるようにすることです (非常に時間がかかる/ハードウェア ドングルが必要など)。

宜しくお願いします、LorToso

4

1 に答える 1

0

私もこの問題に遭遇しましたが、残念ながら運が悪かったようです。vstest.console.exe は、C++ と C# の両方で限られた数のフィルターのみをサポートします。

私が進めようとしているアプローチは、テストを異なるモジュールに分離することです。これにより、夜間および CI ビルドの単体テストとリリースのみの統合テスト (データベースが必要な場合など) を実行できます。

または、同じモジュール内でそれらを名前空間で分割し、FullyQualifiedName フィルターを使用することもできます。残念ながら、'!~' 条件も存在しないため、何らかの方法で回避する必要があるかもしれません。

于 2017-03-22T23:14:11.030 に答える