3
자동화 테스트에서 테스트 사례 입력으로 사용될 검색 매개 변수의 조합을 생성하는 것이 문제입니다.각 반복마다 동일한 결과를 반환하는 yield return
private IEnumerable<object[]> _GetCombinations(ArrayList inputs)
{
var returnobjects = new object[inputs.Count];
var element = inputs[0];
var type = element.GetType();
var generictype = type.GenericTypeArguments[0];
var elementvalues = type.GetProperty("PossibleValues").GetValue(element, null) as IEnumerable;
foreach (var val in elementvalues)
{
returnobjects[0] = val;
if (inputs.Count > 1)
{
var objs = _GetCombinations(inputs.GetRange(1, inputs.Count - 1));
foreach (var item in objs)
{
for (int i = 0; i < item.Length; i++)
{
returnobjects[i + 1] = item[i];
}
yield return returnobjects;
}
}
else
{
yield return returnobjects;
}
}
}
내부 TestMethod :
[TestMethod]
public void GetCombinationTest()
{
var x = new CombinationInput<Enums.AmountType>();
var y = new CombinationInput<Enums.AreaMeasureType>();
var z = new CombinationInput<Enums.DisplayItemType>();
ArrayList list = new ArrayList();
list.Add(x);
list.Add(y);
list.Add(z);
var combgen = new CombinationGenerator(list);
var combs = combgen.GetCombinations();
}
내가 코드를 실행할 때 가져 조합이 항상 같은 조합을 반환하지만 때를 디버그를
public class CombinationInput<T>
{
public string Name { get; set; }
public List<T> PossibleValues { get; set; }
public bool ReadOnly { get; set; }
}
GetCombinations는 a를 Combinationsgenerator 클래스의 방법이다 코드를 통해 수익률 계산서를 쳤을 때 올바른 조합을 얻습니다.
참조 유형은 참조로 전달됩니다 *. 배열은 참조 유형입니다. –