これは簡単に思えますが、何らかの理由で機能しません。
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");
}
}
}