大家好,我在为 TestCaseSource 生成测试用例时遇到问题。我为测试编写了这段代码:
using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
namespace HeapSort.Tests
{
[TestFixture]
public class Tests
{
[Test, TestCaseSource(typeof(TestsGenerator),"TestCases")]
public void IsEqualCollections(int[] received, int[] expected)
{
CollectionAssert.AreEqual(received, expected);
}
}
public class TestsGenerator
{
public static IEnumerable<TestCaseData> TestCases
{
get
{
for (var i = 0; i < 25; i++)
{
int[] t1 = GenerateCollection(i), t2 = t1.ToArray();
HeapSort.Sort(t1);
Array.Sort(t2);
yield return new TestCaseData(t1, t2);
}
}
}
private static int[] GenerateCollection(int seed)
{
var rnd = new Random(seed+DateTime.Now.Millisecond);
int size = rnd.Next(100, 10000);
int[] array = new int[size];
for (var i = 0; i < size; i++)
array[i] = rnd.Next(-100, 100);
return array;
// return Enumerable
// .Repeat(100, rnd.Next(100, 10000))
// .Select(i => rnd.Next(-100, 100))
// .ToArray();
}
}
}
问题出在哪里?我得到的不是 25 个测试,而是从 1 到 8。通常在测试的起点它显示测试是 7/8,最后只有一个测试用例。
我怎么解决这个问题?
UPD1:有趣的是,当我通过控制台运行测试时,我处理了所有 25 个测试,我如何通过 GUI 获得相同的结果!?
PS对不起我的英语不好。
也许我应该提到我在 Rider 的 Ubuntu 下工作