并非我的所有NUnit测试方法都可以在“测试资源管理器”中看到

时间:2019-05-03 20:49:33

标签: c# nunit execution

我将使用NUnit添加自动化的单元测试,以测试公司正在使用的现有的自行开发的C#应用​​程序。如果我使用两个测试,则只有其中一个可见并运行。

我正在使用Visual Studio 2019 Professional和NUnit v3.11.0以及Nunit3TestAdapter v3.13.0。

我创建了两个实现IEnumerator的类,以及两个使用测试文件中数据的方法,即上述类中定义的简单.csv。

 // Test 1 - success (ok dates)
public class DonneesTestOK : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        var reader = new StreamReader(File.OpenRead(
                        @"C:\GIT_Repo\ndm1001\TestSucces.csv"));

        while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            var values = line.Split(',');
            string psDatesDebut = values[0];

            yield return new string[] { psDatesDebut };
        }

    }
}

// Test 2 - fail (bad dates)
public class DonneesTestPasOK : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
       var reader = new StreamReader(File.OpenRead(
                        @"C:\GIT_Repo\ndm1001\TestEchec.csv"));

        while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            var values = line.Split(',');
            string psDatesDebut = values[0];

            yield return new string[] { psDatesDebut };
        }
    }
}

我还创建了两种方法来使用相应的数据文件测试主应用程序。

[TestFixture]
public class TestNUnit
{

    // test 1 - succes (ok dates)
    [TestCaseSource(typeof(DonneesTestOK))]

    public void TestNDM1001OK(string[] psDatesDebut)
    {

        int intCodeRetour = 0x00;
        int expected = intCodeRetour;
        Assert.That(Program.Main(psDatesDebut), Is.EqualTo(expected));
    }

    // test 2 - echec (bad dates)
    [TestCaseSource(typeof(DonneesTestPasOK))]
    public void TestNDM1001PasOK(string[] psDatesDebut)
    {

        int expected = 8;
        Assert.That(Program.Main(psDatesDebut), Is.EqualTo(expected));
    }
}

只有 TestNDM1001OK 可见并运行。

主要方法声明如下:

class Program
{
    public static int Main(string[] args)
...

}

与其他应用程序中的测试一样,代码应测试主应用程序并生成具有正确数据的输出文件。 我使用来自.csv的一系列日期测试该应用程序,然后该应用程序生成了一些输出文件。


已修复:

好的,这是初学者的错误。 我比较了两种测试都能正常工作的VS2017环境和一种无法正常工作的VS2019环境。

在VS2019中的“测试资源管理器”中的“全部运行”和“运行...”选项之外,我还注意到了“播放列表”部分,其中选择了名为“ PasOK”的播放列表。我想知道为什么会这样,并且想起了星期五,我创建了两个播放列表,但不记得我选择了其中一个。在VS2017中,没有选择任何东西,并且一切正常。因此,我在VS2019中将下拉列表更改为“播放列表“所有测试”,现在可以使用了。

2 个答案:

答案 0 :(得分:0)

您是否尝试安装MSTest.TestAdapter?vs2017有类似问题

答案 1 :(得分:0)

如果您没有看到第二种方法的任何测试,则该方法的源不返回任何数据。为了找出原因,只需调试它的枚举器即可。