1

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

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

4

1 回答 1

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 的构造函数中
设置数据用于测试
fact1。IE 是“如果您看到此字符串 - 则浏览器引用不为空。” 在 MyTestClass的构造函数
中处理 MyTestClass中的 设置数据以进行测试 事实上 2。IE 是“如果您看到此字符串 - 则浏览器引用不为空。” 在 Dispose MyTestClass 关闭 IE ...




于 2014-06-19T01:15:28.157 回答