xUnit and Watin cleanup



我有一些使用xUnit和Watin的测试用例。为了使类中的所有fact共享同一个IE实例,我创建了一个单例类,因此第一个测试将启动一个新的IE实例,随后的测试将使用同一个实例。

所有事实完成后,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是'如果你看到这个字符串-那么浏览器引用不是空的。'
in Dispose of MyTestClass
MyTestClass的构造函数
设置测试数据
在fact2。IE是'如果你看到这个字符串-那么浏览器引用不是空的。'
in Dispose of MyTestClass
关闭IE…

最新更新