C# Получить тестовые случаи по TestCaseSource - чтение текстового файла - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь получить свои тестовые случаи nunit, читая текстовый файл, который содержит TestCase на строку. В этом случае я использую атрибут TestCaseSourceAttribute.

[Test, TestCaseSource("TestSelection")]
//TestMethod


public static object[] TestSelection()
{
    var amountOfTestCases = GetAmountTestCases(@"path\TestCases.txt");
    var result = new object[amountOfTestCases];

    for (var i = 0; i < amountOfTestCases; i++)
    {
        result[i] = new object[] { GetTestCase(i, @"path\TestCases.txt") };
    }

    return result;
}

При GetAmountTestCases() я получаю строки текста в текстовом файле, а GetTestCase() читает указанную строку текста c, чтобы получить мой TestCase.

public static int GetAmountTestCases(String path)
{
    var lineCount = 0;
    using (var reader = File.OpenText(path))
    {
        while (reader.ReadLine() != null)
        {
            lineCount++;
        }
    }
    return lineCount;
}

public static String GetTestCase(int lineNum, String path)
{
    var lineCount = 0;
    String testCase = String.Empty;
    using (var reader = File.OpenText(path))
    {
        while (reader.ReadLine() != null)
        {
            if (lineCount == lineNum)
            {
                testCase = reader.ReadLine();
            }
            else
            {
                lineCount++;
            }

        }
    }
    return testCase;
}

После сборки .dll содержит тестовые модули с нулевым содержимым в качестве содержимого. Я даже не могу отладить без указания c TestCase в моем коде.

1 Ответ

1 голос
/ 22 апреля 2020

У вас довольно сложный способ сделать это, у меня работает следующий код:

[Test, TestCaseSource("GetMyFileData")]
//Method

public static string[] GetMyFileData()
{
    var path = @"C:\temp\MyFile.txt";
    return File.ReadAllLine(path)
               .ToArray();
}

Пожалуйста, проверьте, правильно ли указан ваш путь.

Если это относительный путь к файлу, который развертывается при сборке, проверьте, правильно ли он настроен: его Build Action должно быть примерно таким: Content, а Copy to output directory должно быть Copy of newer или Copy always

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...