xUnit和Watin清理

时间:2014-06-19 00:36:40

标签: c# watin xunit resource-cleanup

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

完成所有事实后,IE实例仍在运行。我只是想知道如何在课堂上完成所有测试后关闭IE。

1 个答案:

答案 0 :(得分:3)

为此,您的测试类需要实现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的构造函数中   设置测试数据
  事实上1。 IE是'如果你看到这个字符串 - 那么浏览器引用不是空的。'   在处理MyTestClass中   在MyTestClass的构造函数中   设置测试数据
  事实上2。 IE是'如果你看到这个字符串 - 那么浏览器引用不是空的。'   在处理MyTestClass中   关闭IE ...