在WatiN测试中维护一个singleton对象

本文关键字:一个 singleton 对象 WatiN 测试 维护 | 更新日期: 2023-09-27 18:00:52

我在NUnit测试中保留对象singleton时遇到了问题。

这是我的基类:

[TestFixture]
public class SuiteBase
{
    public MyLib lib = null;
    [TestFixtureSetUp]
    public void TestFixtureSetUp()
    {
        lib = MyLib.Instance;
    }
    [TestFixtureTearDown]
    public void TestFixtureTearDown()
    {
    }
}

这是我的一个测试套件。

[TestFixture]
public class Suite1 : SuiteBase
{
    [Test]
    public void Test1()
    {
        lib.Foo();
        //...
    }
    [Test]
    public void Test2()
    {
        lib.Bar();
        //...
    }
}

MyLib类定义如下:

//singleton class
public sealed class MyLib
{
    public IE browser;
    //other public fields...
    public static MyLib Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new MyLibLib();
                using (StreamWriter sw = new StreamWriter(@"c:'test.txt", true))
                {
                    sw.WriteLine("Creating object");
                    sw.Flush();
                }
            }
            return instance;
        }
    }
    private static MyLib instance;
    private MyLib()
    {
        browser = new IE();
        //init the rest of public fields
    }
}

问题是每次测试都会创建singleton类对象,我使用运行

int result = NUnit.ConsoleRunner.Runner.Main(new string[] { 
"/run:" + MyAssembly.GetName().Name + testSuiteName + "." + testCaseName, MyAssembly.Location, 
                            "/process:Single",
                            "/domain:Single",
                            "/nothread",
                            "/timeout:" + testTimeout
        }
    );

任何想法都将不胜感激。谢谢

在WatiN测试中维护一个singleton对象

将"/domain:Single"更改为"/domain:None"后,它现在创建一个单一对象