我有一些使用 xUnit 和 Watin 的测试用例。为了使类中的所有 Facts 共享同一个 IE 实例,我创建了一个单例类,因此第一个测试将启动一个新的 IE 实例,接下来的测试将使用同一个实例。
在所有 Facts 完成后,IE 实例仍在运行。我只是想知道在课堂上的所有测试完成后如何关闭 IE。
我有一些使用 xUnit 和 Watin 的测试用例。为了使类中的所有 Facts 共享同一个 IE 实例,我创建了一个单例类,因此第一个测试将启动一个新的 IE 实例,接下来的测试将使用同一个实例。
在所有 Facts 完成后,IE 实例仍在运行。我只是想知道在课堂上的所有测试完成后如何关闭 IE。
为此,您的测试类需要实现IUserFixture接口。
我将提供解决您的需求并演示xunit
生命周期模型的示例:
public class MyTestClass : IUseFixture<WatinFixture>, IDisposable
{
private WatinFixture _data;
public void SetFixture(WatinFixture data)
{
_data = data;
Console.WriteLine("setting data for test");
}
public MyTestClass()
{
Console.WriteLine("in constructor of MyTestClass");
}
[Fact]
public void Fact1()
{
Console.WriteLine("in fact1. IE is '{0}'", _data.ReferenceToIE);
// use _data.ReferenceToIE here
}
[Fact]
public void Fact2()
{
Console.WriteLine("in fact2. IE is '{0}'", _data.ReferenceToIE);
// use _data.ReferenceToIE here
}
public void Dispose()
{
Console.WriteLine("in Dispose of MyTestClass");
}
}
public class WatinFixture : IDisposable
{
public string ReferenceToIE = null;
public WatinFixture()
{
// start IE here
Console.WriteLine("Starting IE ...");
ReferenceToIE = "If you see this string - then browser reference is not empty.";
}
public void Dispose()
{
// close IE here
Console.WriteLine("Closing IE ...");
ReferenceToIE = null;
}
}
输出:
启动 IE ...
在 MyTestClass 的构造函数中
设置数据用于测试
fact1。IE 是“如果您看到此字符串 - 则浏览器引用不为空。” 在 MyTestClass的构造函数
中处理 MyTestClass中的 设置数据以进行测试 事实上 2。IE 是“如果您看到此字符串 - 则浏览器引用不为空。” 在 Dispose MyTestClass 关闭 IE ...