我收到以下消息運行我的測試。C#異常:NullReferenceException
消息:
試驗方法Automation.Test1.General拋出異常: System.NullReferenceException:未設置爲一個對象的實例對象引用。
Automation.Library.CheckLogIn()在C:\的Documents and Settings \ Administrator的\我的文檔\ Visual Studio 2010的\項目\自動化\自動化\ Library.cs:行152
Automation.Test1.General( )在C:\ Documents和Settings \管理員\我的文檔\的Visual Studio 2010 \項目\自動化\自動化\ Test1.cs:線72
Library.cs(超類)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Selenium;
using System.IO;
using System.Reflection;
using System.Net;
using System.Configuration;
namespace Automation
{
[TestClass]
public class Library
{
public ISelenium Sel;
// Open browser
public void OpenBrowser(out ISelenium selenium, out StringBuilder verificationErrors)
{
selenium = new DefaultSelenium(GetAppConfig("TestMachine"), 4444, GetAppConfig("Browser"), GetAppConfig("URL"));
selenium.Start();
selenium.Open(GetAppConfig("URL"));
verificationErrors = new StringBuilder();
}
// Returns the value of the passed key from App.config
public string GetAppConfig(string key)
{
return ConfigurationManager.AppSettings[key].ToString();
}
// Check for Login
public void CheckLogIn()
{
if (Sel.IsElementPresent(GetAppConfig("SignOn")))
{
Sel.Type(GetAppConfig("UserNameField"), GetAppConfig("UserName"));
Sel.Type(GetAppConfig("PWDField"), GetAppConfig("PWD"));
Sel.Click(GetAppConfig("Go"));
}
else
{
// do nothing
}
}
}
}
Test1.cs(子類)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Selenium;
using System.IO;
using System.Reflection;
using System.Net;
using System.Configuration;
namespace Automation
{
[TestClass]
public class Test1
{
public ISelenium Sel;
public StringBuilder Err;
Boolean bNextFlag = false;
Library Lib = new Library();
// Constructor
public Test1()
{
// Launch browser with application URL
Lib.OpenBrowser(out Sel, out Err);
Sel.WindowMaximize();
Lib.CheckLogIn();
}
[TestMethod]
public void General()
{
// Verify Tab
if (Sel.IsElementPresent(Lib.GetAppConfig("TAB")))
{
Sel.Click(Lib.GetAppConfig("TAB"));
bNextFlag = true;
}
else
{
// do something
}
}
}
}
app.config.xml
<?xml version="1.0" encoding="utf-8" ?>
<add key="TestMachine" value="localhost"/>
<add key="Browser" value="*iexplore"/>
<add key="URL" value="http://localhost//Default.aspx"/>
<!-- CheckLogIn-->
<add key="SignOn" value="//*[@id="LogIn"]"/>
<add key="UserNameField" value="//*[@id="username"]"/>
<add key="PWDField" value="//*[@id="pwd"]"/>
<add key="Go" value="//*[@id="gobutton"]"/>
<add key="UserName" value="admin"/>
<add key="PWD" value="password"/>
<!-- End of CheckLogIn-->
<!-- Object Definitions-->
<add key="TAB" value="//*[@id="Tab"]"/>
<!-- End of Object Definitios-->
感謝您的迴應,但我不確定我通過初始化Sel瞭解您的意思。我如何初始化它? – Maya 2011-06-10 17:32:24
作爲參考類型,「Sel」的默認值將爲空。你需要分配一個實現'ISelenium'的實例,或者把它作爲你的構造函數的參數或者創建一個新的對象。 – 2011-06-10 17:44:53
謝謝!謝謝!!非常感謝! – Maya 2011-06-10 18:03:45