3

いくつかの機能テストの自動化を開始したいところまで成長した MVC3 Web アプリケーションがあります。そのため、単体テストを配置した同じプロジェクトにコード化された UI テストを追加しようとしました。欲求不満以外の何物でもありません。

簡単な一連のステップ、つまりアプリケーションへのログインを記録することができました。

コードを生成できました。生成されたコードは、UIMap.Designer.cs という名前のファイルで確認できます。このクラスのインスタンスがインスタンス化され、LoginTest.cs という名前のファイルでテスト メソッドが呼び出されます。

LoginTest.cs の [TestMethod] を右クリックして [テストの実行] を選択しようとすると、最初は次のエラーが発生しました。

テスト コンテナー 'C:...\WebRole.Tests.dll' またはその依存関係の 1 つを読み込めません。エラーの詳細: System.IO.FileNotFoundException: ファイルまたはアセンブリ 'Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

そこで、次の参照を Copy Local = false から true に切り替えました。

  • Microsoft.VisualStudio.TestTools.UITesting
  • Microsoft.VisualStudio.TestTools.UITest.Extension
  • Microsoft.VisualStudio.QualityTools.CodedUITestFramework

ここで、テストを実行すると、次の出力が得られます。

テスト開始:

合計テスト数: 1、フィルター済み: 1

テストが見つかりません。

期間 : 94.9989452249951

ブラウザー インスタンスが開始されていません。Azure Compute も Azure Storage エミュレーターも開始されていません。アプリケーションはパッケージ化およびデプロイされません。要するに、アプリケーションを実行したときに起こることは何も起こらないようです。そのため、Azure エミュレーター環境が実行されていないため、UI テストがどのように実行されるのかについて、私は困惑しています。

これを回避するために、VS2010 の 2 つのインスタンスを開こうとしました。最初に、通常どおりアプリケーションを実行して、Azure エミュレーターを実行し、アプリケーションをデプロイしました。2 番目に、CodedUITest メソッドを実行しました。同じ結果です。

今、私は立ち往生しています。Azure SDK v1.4 で提供される Azure エミュレーターに対してコード化された UI テストを実行できる人はいますか?

4

2 に答える 2

0

これはおそらくOPには遅すぎますが、同様の問題を抱えている他の誰かを助けるかもしれません(それは数時間前の私でした)。

警告: 私は CodedUI の完全な初心者なので、これは正しい方法ではない可能性があります。しかし、少なくともそれは私を始めさせました。

同様の状況があります: Azure 1.4、ASP.NET MVC (私の場合は 2) Web アプリ。デスクトップ開発環境 (VS2010 Premium) で実行できる一連の UI テストを開始したいと考えています。

1. CodedUI テストを少し記録します。これを実行できることを証明するために、実行中の何かを確認できるようにします。(私はこれからの最初のいくつかの手順に従いました: http://msdn.microsoft.com/en-us/library/dd286608.aspx )。

記録を開始する前にブラウザーを開き、Web アプリを開始するために必要なすべてのことを記録します。

  1. ブラウザーを起動するための初期化コードをテストに追加します。コード化された UI テスト クラスで、[TestInitialize] 属性を持つメソッドを追加します。
    [TestInitialize]
    public void LaunchBroswer()
    {
        BrowserWindow browser = BrowserWindow.Launch(new System.Uri("https://127.0.0.2/Logon"));
    }

もちろん、URI は異なる場合があります。これは、私が他のいくつかの投稿から推測しなければならなかったちょっとした魔法でした. 折りたたまれたコード領域に TestInitialize を配置しても役に立ちませんでした。

  1. テストを実行するには、Azure エミュレーターを開始します: Ctrl+F5 (これにより、ブラウザーで Web アプリが開始されますが、テストは実行されません。

  2. これで、エミュレーターを開始した VS の同じインスタンスからテストを実行できるようになりました。

于 2011-12-09T16:28:06.977 に答える
-1

あなたが経験している痛みは、Azure だけでなく、コード化された UI テスト全体に関連しています。MVC (および asp.net) には、痛みを和らげるツールがいくつかあります (コード化された UI スイートは必要ありません)。

SpecFlowWatiNを試しましたか? MVContribライブラリの一部としてビルドされた Nuget から使用できるパッケージもあります。

UI のテストに役立つことを願っています。

次のような手順については、channel9 をチェックしてください:このビデオ

于 2011-08-10T20:30:26.890 に答える