1

これは簡単に思えますが、何らかの理由で機能しません。

NunitでSeleniumを使用しています。

「Registration_Test」という名前のクラスが 1 つあります。このクラスには、説明どおりに機能する「completeRegistrationForm()」という名前のメソッドがあります。

このメソッドを使用して、さまざまなテストを呼び出すことができるようにしたいと考えています。

これは、2回目のテストで得たものです。

Registration_Test reg = new Registration_Test();
reg.completeRegistrationForm();

これは問題なくコンパイルされますが、Nunit で実行すると次のようになります。

SeleniumTests.Check_Links.Check_linksTest:
System.NullReferenceException : Object reference not set to an instance of an object.

reg.completeRegistrationForm(); であることを示します。ラインが犯人です。

あなたが提供できる助けに感謝します。

ここに私の2つのテストがあります:

登録-test.cs

namespace SeleniumTests
{
[TestFixture]
public class Registration_Test
{
    private ISelenium selenium;
    private StringBuilder verificationErrors;

    [SetUp]
    public void SetupTest()
    {
        selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://custom-creative-404-dropbox:8080/");
        selenium.Start();
        verificationErrors = new StringBuilder();
    }

    [TearDown]
    public void TeardownTest()
    {
        try
        {
            selenium.Stop();
        }
        catch (Exception)
        {
            // Ignore errors if unable to close the browser
            Console.Write("Unable to Stop Selenium and/or close the browser");
        }
        Assert.AreEqual("", verificationErrors.ToString());
    }

    [Test]
    public void Registration()
    {

        completeRegistrationForm();

        //back to home page.
        selenium.Click("link=Home");
        selenium.WaitForPageToLoad("30000");
    }


    public void completeRegistrationForm()
    {
        selenium.Open("/");
        selenium.Click("link=Register");
        selenium.WaitForPageToLoad("30000");

        string uniqueVal = selenium.GetEval("\"AutomatedTest\" + (new Date().getDate()) + (new Date().getTime())");
        //use moment instead.

        selenium.Type("id=RegistrationForm_TxtName", uniqueVal);

        selenium.Type("id=RegistrationForm_TxtUserName", uniqueVal + "@creative-404.com");
        selenium.Type("id=RegistrationForm_TxtPassword", uniqueVal);
        selenium.Type("id=RegistrationForm_TxtRePassword", uniqueVal);
        selenium.Click("id=RegistrationForm_Button1");
        selenium.WaitForPageToLoad("30000");

        for (int second = 0; ; second++)
        {
            if (second >= 60) Assert.Fail("timeout");
            try
            {
                if (selenium.IsTextPresent("Registration was successful!")) break;
            }
            catch (Exception)
            {
                Console.Write("Unable to find the Registration successful message. Something has gone wrong..");
            }
            Thread.Sleep(1000);
        }
    }

}
}

および Test-Links.cs (このテストは、これをテストするためだけに作成されました)

namespace SeleniumTests
{
[TestFixture]
public class Check_Links
{
    private ISelenium selenium;
    private StringBuilder verificationErrors;

    [SetUp]
    public void SetupTest()
    {
        selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://custom-creative-404-dropbox:8080/");
        selenium.Start();
        verificationErrors = new StringBuilder();
    }

    [TearDown]
    public void TeardownTest()
    {
        try
        {
            selenium.Stop();
        }
        catch (Exception)
        {
            // Ignore errors if unable to close the browser
        }
        Assert.AreEqual("", verificationErrors.ToString());
    }

    [Test]
    public void Check_linksTest()
    {
        Registration_Test reg = new Registration_Test();
        reg.completeRegistrationForm();

        selenium.Open("/home.aspx");
        selenium.Click("link=Home");
        selenium.WaitForPageToLoad("30000");
        selenium.Click("link=Gallery");
        selenium.WaitForPageToLoad("30000");
    }
}
}
4

1 に答える 1

0

nUnit プロセスにアタッチして、失敗した行http://frater.wordpress.com/2010/05/04/debugging-nunit-tests-under-visual-studio-2010/をデバッグできます。

[デバッグ] > [例外] で、例外で中断するように Visual Studio を構成できます。「共通言語ランタイム例外」の横にある「ユーザー未処理」を選択します。

ここに画像の説明を入力

于 2012-07-15T08:43:51.487 に答える