NUnit и TestCaseAttribute, возможно ли перекрестное соединение параметров?

У меня есть юнит-тест, который тестирует различные случаи, например:

public void Test1(Int32 a, Int32 b, Int32 c)

Допустим, я хочу создать тестовый код без цикла, поэтому я хочу использовать TestCase для указания таких параметров:

[TestCase(1, 1, 1)]
public void Test1(Int32 a, Int32 b, Int32 c)

Можно ли мне с этим атрибутом сказать следующее:

  • Для первого параметра, вот набор значений
  • Для второго параметра, вот набор значений
  • Для третьего параметра, вот набор значений
  • Теперь протестируйте все комбинации выше

То есть. что-то вроде этого:

[TestCase(new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 4 })]
public void Test1(Int32 a, Int32 b, Int32 c)

Не похоже, но, может быть, я что-то упускаю?

1 ответ

Решение

NUnit предоставляет атрибут Values, который можно использовать вместе с атрибутом Combinatorial для достижения этой цели:

[Test, Combinatorial]
public void Test1( 
    [Values(1,2,3,4)] Int32 a, 
    [Values(1,2,3,4)] Int32 b, 
    [Values(1,2,3,4)] Int32 c
)
{
    ...
}
Другие вопросы по тегам