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
)
{
...
}