Не все мои тестовые методы NUnit видны в Test Explorer - PullRequest
0 голосов
/ 03 мая 2019

Я добавляю автоматизацию тестов единства с помощью 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, где один не работал.

Помимо параметров «Выполнить все» и «Выполнить ...» в Test Explorer в VS2019, я также заметил «Список воспроизведения»раздел, в котором был выбран плейлист под названием «PasOK».Я удивился, почему это произошло, и вспомнил, что в пятницу я создал два плейлиста, но не помню, чтобы выбирал какой-либо из них.В VS2017 ничего не было выбрано и все работало нормально.Итак, я изменил выпадающий список «Плейлист« Все тесты »в VS2019, и теперь он работает.

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Если вы не видите никаких тестов для второго метода, то источник для этого метода не возвращает никаких данных. Чтобы выяснить почему, просто отладьте его перечислитель.

0 голосов
/ 04 мая 2019

Вы пытались установить MSTest.TestAdapter? У меня похожая проблема с vs2017

...