Почему NUnit игнорирует точки данных при использовании обобщений в теории - PullRequest
2 голосов
/ 12 марта 2010

Я пытаюсь использовать TheoryAttribute , представленный в NUnit 2.5. Все работает нормально, если аргументы имеют определенный тип:

[Datapoint]
public double[,] Array2X2 = new double[,] { { 1, 0 }, { 0, 1 } };

[Theory]
public void TestForArbitraryArray(double[,] array)
{
  // ...
}

Не работает, когда я использую дженерики:

[Datapoint]
public double[,] Array2X2 = new double[,] { { 1, 0 }, { 0, 1 } };

[Theory]
public void TestForArbitraryArray<T>(T[,] array)
{
  // ...
}

NUnit выдает предупреждение «1009 *». Почему это так?

1 Ответ

2 голосов
/ 16 марта 2010

Я думаю, это потому, что точки данных должны соответствовать типам с атрибутом DatapointAttribute. Из справки NUnit для точек данных:

Когда теория загружается, NUnit создает аргументы для каждого из своих параметров, используя любые поля того же типа , что и параметр, аннотированный DatapointAttribute. Кроме того, также используются элементы массивов требуемого типа, аннотированные атрибутом DatapointsAttribute.

...