use*_*888 10 c# automated-tests mstest ui-testing
我有一个基类ScriptBase,它有一个名为的虚函数MyTestInitialize().当我打电话MyTestInitialize()从派生类,则该值testContextInstance是null.这有什么解决方案吗?请帮忙,因为我是自动化测试的新手.提前致谢
[CodedUITest]
public class ScriptsBase
{
public ScriptsBase()
{
}
private static TestContext bingTestContext;
public static TestContext BingTestContext
{
get { return ScriptsBase.bingTestContext; }
set { ScriptsBase.bingTestContext = value;}
}
#region TestInitialize
//Use TestInitialize to run code before running each test
[TestInitialize()]
public virtual void MyTestInitialize()
{
Browser.CloseAllBrowsers();
BingTestContext = testContextInstance;
}
#endregion
#region TestCleanup
//Use TestCleanup to run code after each test has run
[TestCleanup()]
public virtual void MyTestCleanup()
{
PPI.HomePage = new HomePageUI();
Browser.CloseAllBrowsers();
}
#endregion
#region TestContext
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
private TestContext testContextInstance;
#endregion
}
public class DestinationMasterTestScripts : ScriptsBase
{
public DestinationMasterTestScripts()
{
}
[TestInitialize()]
public override void MyTestInitialize()
{
Console.WriteLine("Initialize");
base.MyTestInitialize();
}
}
Run Code Online (Sandbox Code Playgroud)
尝试创建一个ClassInitialize方法:
private static TestContext bingTestContext
[ClassInitialize]
public static void ClassInit(TestContext con)
{
bingTestContext = con;
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是在您的基类中将 TestContext 声明为抽象
public abstract TestContext TestContext { get; set; }
Run Code Online (Sandbox Code Playgroud)
并在您最派生的具体类中覆盖它
public override TestContext TestContext { get; set; }
Run Code Online (Sandbox Code Playgroud)