2

私はVisualStudio2012を使用しており、Visual Studioのテストフレームワーク(mstest)を使用していくつかの統合テストを開発しています。

数日前、Visual Studio 2012が出力ディレクトリ(つまり、 bin \ Debugbin \ Release )でテストを実行できるようになったという情報を見つけ、多くのことを簡素化するために展開を無効にしました。

ほとんどのことが期待どおりに機能しましたが、大きな問題が見つかりました。一部の[ClassInitialize]コードはクラスを使用してプロセスを実行し、デプロイメントProcessを無効にした直後に、プロセスが起動されるたびに次のエラーが発生します。

ここに画像の説明を入力してください

私の第一印象は、起動プロセスの何かが間違っていた可能性があり、同じコマンドと引数をCMDにコピーして貼り付けたところ、期待どおりに機能したということでした。

調査の結果、なぜこれが発生したのかがわかりました。テストランナーを64ビットプロセスとして起動するように構成したためです。たとえば、X86に切り替えた後は機能しProcess.Start("cmd")ました。

しかし、さらに悪いのは、 SQLCMD(テスト実行内で起動している実際のプロセス)が、いわゆるエラーで失敗することです。

このエラーは、VisualStudioテストランナー内でプロセスが起動されたときに発生します。

テストランナーから起動すると、SQLCMDはどうなりますか?

4

1 に答える 1

1

試行錯誤の末、ようやく問題を解決しました。

  • これで、64ビットプロセスとしてテストを実行できます(これが主な問題だと思いましたが、間違っていました!)。
  • 出力ディレクトリからテストを実行できます!

しかし、それを正しく機能させるために何を変更する必要がありましたか?.runsettingsファイル。XML要素をコメントアウトするだけでした<DataCollectionRunSettings>...そして突然SQLCMDプロセスが再び機能し始めました!

その構成要素をコメントアウトすることがなぜうまくいったのかは本当にわかりませんが、要点は、統合テストだけが必要であり、それらを「そのまま」実行するだけなので、このソリューションは私にとっては問題ないということです。

とにかく、要素をコメントアウトすること<DataCollectionRunSettings>がこの効果をもたらす理由を誰かが説明できれば、それはありがたいです。

ともあれ、ありがとう!

于 2012-11-19T11:26:06.967 に答える