Ваш первоначальный тест принимает один аргумент типа Something
. Очевидно, A.GenerateObjects()
возвращает какой-то IEnumerable из этих объектов - вы не показываете детали. Поскольку тест является методом с одним аргументом, он работает. NUnit предоставляет особый случай для методов с одним аргументом, который очень прост и примет массивы объектов или требуемого типа и сгенерирует для вас тестовые случаи.
Однако, для нескольких аргументов, вы сами должны вернуть набор тестовых случаев из вашего метода. Как вы, наверное, знаете, аргументы метода в C # имеют форму object[]
, содержащую аргументы, например new object[] { aSomething, "astring" }
.
Предполагая, что у вас есть определенные строки, которые должны быть связаны с каждым объектом, вы должны сами установить эту связь. Как это сделать, зависит от деталей того, что вы пытаетесь сделать.
У вас есть список строк, которые вы хотите связать со списком объектов один за одним? В этом случае прекратите использовать [TestCaseSource]
и используйте [ValueSource]
или [Values]
для каждого параметра метода тестирования. Примените [Sequential]
к методу, чтобы NUnit сопоставлял объекты и строки один за другим. Вот пример ...
[Test, Sequential]
public void DoSomething(
[ValueSource(typeof(A), nameof(GetObjects)] Something abc,
[Values("string1", "string2", "string3")] string def)
{/*do something*/}
Это всего лишь один из способов сделать это. Мне пришлось сделать несколько предположений относительно того, какие данные у вас есть в наличии и что вы пытаетесь сделать. Если этот подход не работает для вас, пожалуйста, заполните немного, и я отредактирую ответ.