1. ホーム
  2. c#

ユニットテスト(MSTest)を並列で実行するには?

2023-11-02 22:35:31

質問

私はテストスイートを並行して実行する方法を探しています。

私が知っているのは .testrunconfig の設定です。これによって マルチプレックス をCPUの数で設定することができます。

私は1000のテストを並行して実行したいと思います。私がWebサービスをテストしているので、テストに費やされる時間の90%はサービスが応答するのを待つことであるため、これは理にかなっています。

これをやり遂げる方法について何かアイデアはありますか?テストはVSのために書かれていますが、私はVSの外側でそれらを実行することにオープンです。

後の編集 : Visual StudioのテストチームはVS 2015 Update 1でこれを追加しました。以下の Mark Sowul の回答を参照してください。

どのように解決するのですか?

このページの回答のほとんどは、MSTestがテストを並列化することを忘れています。 別々のアセンブリで . あなたはそれを並列化するために、あなたのunittestsを複数の.dllに分割する必要があります。

しかし!最近のバージョン - MSTest V2 - では できる を並列化できるようになりました。(やった!)テストプロジェクトにTestFrameworkとTestAdapterという2つのnugetパッケージをインストールするだけで、以下のようになります。 https://blogs.msdn.microsoft.com/devops/2018/01/30/mstest-v2-in-assembly-parallel-test-execution/

そして、これをテストプロジェクトに追加するだけです。

[assembly: Parallelize(Workers = 4, Scope = ExecutionScope.ClassLevel)]

EDIT: 特定のテストに対して並列実行を無効にすることもできます。 [DoNotParallelize] を使って特定のテストの並列実行を無効にすることもできます。