拥有一个可以测试多个项目的单元测试项目

时间:2019-08-15 20:56:38

标签: c# unit-testing design-patterns

我有3个项目。将它们称为项目A,B和C。这些项目具有非常相似的功能,即使它们彼此无关。通过在互联网上进行研究,我发现人们将他们的单元测试放在了他们正在从事的项目上。

让我解释一下为什么创建一个测试所有项目的单元测试项目而不是3个单元测试项目的原因。

这是我使用的模式:

    [Test]
    public void TestFoo()
    {
        var filter = SystemType.ProjectA | SystemType.ProjectC; // Need to test this on projectA and ProjectB

        // linuxSystems are the computers where I perform the tests
        var linuxSystems = Globals.LinuxSystemsToTest();

        foreach (var ls in linuxSystems)
        {
            // do not test if flag is not precent
            if (filter.HasFlag(ls.SystemType) == false)
                return;

            ls.Connect();

            var output = ls.RunCommand("sudo cat /var/someFile");

            Assert.IsTrue(output.Contains("foo"));
            // perform test
        }
    }

如果我决定为每个项目创建一个单元测试项目(有3个),那么我将不得不创建2个调用相同基类的单元测试。此外,在添加新测试时,如果需要在所有3个项目上进行测试,则必须打开3个项目并在每个项目上添加测试,而不仅仅是行var filet = SystemType.ProjectA | SystemType.ProjectB | SystemType.ProjectC;。有一个项目将使我不必做所有这些事情。

你们推荐用于测试我的3个项目的最佳模式是什么?

0 个答案:

没有答案