3

Nunitテストで次のコードがあります...

    string url = "";
    url = @"http://localhost/ClientPortalDev/Account/LogOn";
    ieStaticInstanceHelper = new IEStaticInstanceHelper();
    ieStaticInstanceHelper.IE = new IE(url);
    ieStaticInstanceHelper.IE.TextField(Find.ById("UserName")).TypeText("abc");
    ieStaticInstanceHelper.IE.TextField(Find.ById("Password")).TypeText("defg");
    ieStaticInstanceHelper.IE.Button(Find.ById("submit")).Click();
    ieStaticInstanceHelper.IE.Close();

Dev10(Visual Studio 10)でプロジェクトを右クリックし、[Test With] [NUnit 2.5]を選択すると、このテストコードは問題なく実行されます。TestDrivenをインストールしました。C:\ Program Files(x86)\ NUnit 2.5.5 \ bin \ net-2.0 \ nunit.exe "からNUnitを開き、テストdllを開くと、次のテキストがNUnitのエラーと失敗で報告されます。

... LoginAsWellKnownUserShouldSucceed:
System.Runtime.InteropServices.COMException : Error HRESULT E_FAIL has been returned from a call to a COM component.

余談ですが...Dev10でソースcsファイルを右クリックし、[テストの実行]を選択すると、...も機能します。上記のテストは実際にはTechTalk.SpecFlow1.3ステップの一部であり、NUnit 2.5.5.10112がインストールされており、Watin 20.20がインストールされており、テストdll用に次のApp.configがあり
、開始角度ブラケットが削除されています...方法xmlを表示しますか

configuration>
  configSections>
    sectionGroup name="NUnit">
      section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
    /sectionGroup>
  /configSections>
  NUnit>
    TestRunner>
      add key="ApartmentState" value="STA" />
    /TestRunner>
  /NUnit>
  appSettings>
    add key="configCheck" value="12345" />
  /appSettings>
/configuration>

誰かが前にこれを打った?NUnitテストは明らかにTestDrivenのNUnit2.5.5で実行されますが、Dev10およびTestDrivenの外部からNUnit 2.5.5を実行する場合は実行されませんか?

4

3 に答える 3

1

管理者として NUnit でテストを実行します。私は管理者として Dev10 を実行していたので、w3ww をアタッチしてデバッグできたので、TestDriven テストが機能していました。管理者としてNUnitの実行を開始するとすぐに、COMサーバーの問題はなくなります。さらにややこしいのは、NUnit が管理者として実行されていなくても、Watin サイトから Google に対して hello-world の例を実行すると機能することです。
NUnit + Watin + をローカル Web サーバーに対して使用するには、NUnit を管理者として実行すると、com サーバーの例外の問題が解決されます。

于 2010-06-03T16:38:38.753 に答える
0

私はMSTestを使用しています.キャッシュされたデータを避けるためにRefreshを呼び出します.これは私にとってはうまくいきました:

browser.Refresh();
browser.TextField(Find.ById("username")).TypeText("user");
browser.TextField(Find.ById("password")).TypeText("pass");
browser.Button(Find.ByName("SUBMIT")).Click();
于 2013-11-26T14:45:16.440 に答える
0

構成ファイルの代わりに、テスト コードでRequiresSTA属性を使用してみてください。

于 2011-04-28T05:40:55.680 に答える