如何在不重复工作的情况下跨多个框架(Internet浏览器)使用自动集成测试?

时间:2016-04-12 16:19:55

标签: c# unit-testing selenium xunit

为了提供更多细节,我们需要在三个框架中进行一系列测试(使用Selenium进行UI刺激):IE,Mozilla和Chrome。第一种解决方案是在单独的测试类中复制测试,即每个测试类在构造函数中具有相同的20个测试用例和不同的框架。第二种解决方案是使用参数化输入(或XUnit理论),每种框架类型作为输入:

    /// <summary>
    /// The non-default constructor that initializes
    /// necessary instances of objects that are being used
    /// </summary>
    public VerifyViewUsingChrome() {
        _testBases = new Dictionary<FunctionalTestBase.DriverType, TestBase>();
        _testBases.Add(FunctionalTestBase.DriverType.Chrome, new TestBase(FunctionalTestBase.DriverType.Chrome));
        _testBases.Add(FunctionalTestBase.DriverType.IE, new TestBase(FunctionalTestBase.DriverType.IE));
        _testBases.Add(FunctionalTestBase.DriverType.FireFox, new TestBase(FunctionalTestBase.DriverType.FireFox));
    }


    /// <summary>
    /// Our simple country display test.
    /// </summary>
    [InlineData(FunctionalTestBase.DriverType.Chrome)]
    [InlineData(FunctionalTestBase.DriverType.FireFox)]
    [InlineData(FunctionalTestBase.DriverType.IE)]
    [Theory]
    public void TestADisplayedForACountry(FunctionalTestBase.DriverType testBase) {
        _testBases[testBase].TestADisplayedForACountry();
    }

此实现的问题是每个测试都必须运行所有3个实现,这需要一些开销。理想情况下,我们会运行所有IE测试,然后构建Firefox框架并运行这些测试,然后继续使用Chrome。

可能无法使用测试框架,但是因为我们与构建服务器有方便的搭配,所以保持测试格式是理想的。

0 个答案:

没有答案