Я новичок в C # и NUnit и пытаюсь сделать несколько простых тестов.
Когда я использую жестко закодированные контрольные примеры, например [TestCase (1, 2)], все работает отлично. Я хотел бы использовать текстовый файл в качестве источника Test Case, но не знаю, как это сделать. Я нашел несколько примеров на StackOverflow и в других местах, но он не работает.
// Code that works
namespace UnitTesting.GettingStarted.Tests
{
[TestFixture]
// this part works fine
public class CalculatorTestMultiplication
{
[TestCase(1, 2)]
[TestCase(2, 3)]
[TestCase(3, 8)]
[TestCase(1000, 1)]
public void MultiplierParZero(int lhs, int rhs)
{
var systemUnderTest = new Calculator();
Assert.NotZero(systemUnderTest.Multiply(lhs, rhs));
}
}
}
//Code with error
using System;
using System.Collections.Generic;
using System.IO;
using NUnit.Framework;
namespace UnitTesting.GettingStarted.Tests2
{
public class CalculatorTestMultiplicationFile
{
static object[] TestData()
{
var reader = new StreamReader(File.OpenRead(@"C:\Test\MultiplicationZero.txt"));
List<object[]> rows = new List<object[]>();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
rows.Add(values);
}
return rows.ToArray<object[]>(); // PROBLEM CODE
}
[TestCaseSource("TestCases")]
public void MultiplyByZero(int lhs, int rhs)
{
var systemUnderTest = new Calculator();
Assert.NotZero(systemUnderTest.Multiply(lhs, rhs));
}
}
}
Как и в жестко заданном тестовом примере, я ожидаю, что тест будет пройден, если параметры не равны нулю, что и есть в моем тестовом файле. Я даже не могу запустить этот тест, потому что в строке с кодом: «return rows.ToArray ();» я вижу следующую ошибку: неуниверсальный метод List.ToArray () нельзя использовать с аргументами типа.
Очевидно, что что-то не так с объявлением объекта, но я не знаю, как это исправить.
Спасибо
Mike