Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为单元测试表数据类型生成随机值_C#_Unit Testing_Nunit_Hashtable_Random - Fatal编程技术网

C# 为单元测试表数据类型生成随机值

C# 为单元测试表数据类型生成随机值,c#,unit-testing,nunit,hashtable,random,C#,Unit Testing,Nunit,Hashtable,Random,我的项目通过获取最小值和最大值,为每种数据类型生成很少的值(相等分区方法)。我正在为功能测试生成值,实际上我正在将这些值传递给nunit合作伙伴,max和min适用于int、float、double等,这些值是测试数据 最初我为int、float、double、string等基本数据类型生成 现在我需要支持数据集、哈希表和其他集合等数据类型 public DataSet MySampleMethod(int param1, string param2, Hashtable ht) 对于测试此函

我的项目通过获取最小值和最大值,为每种数据类型生成很少的值(相等分区方法)。我正在为功能测试生成值,实际上我正在将这些值传递给nunit合作伙伴,max和min适用于int、float、double等,这些值是测试数据

最初我为int、float、double、string等基本数据类型生成

现在我需要支持数据集、哈希表和其他集合等数据类型

public DataSet MySampleMethod(int param1, string param2, Hashtable ht)

对于测试此函数,我可以传递int和string的值,但如何传递ht的测试数据,或者如何为哈希表生成测试数据?

您不应该在单元测试中使用随机数据。根据所选数据,测试可能随机通过或失败,当您试图找出失败的原因时,调试代码可能会非常困难,因为您无法以可预测的方式重复失败。

首先-我总是为单元测试设置随机值,以便它们可以重复-但是,类似(使用
字典
代替
哈希表
,但等效):

Random rand=new Random(123456);//注意种子
字典查找=新建字典();
对于(int i=0;i<5000;i++)
{
查找[rand.Next(100000)]=rand.NextDouble();
}

集合类型的最小值和最大值是多少。请明确说明要进行单元测试的行为。公共数据集MySampleMethod(int-param1,string-param2,Hashtable-ht)为了测试这个函数,我可以传递int和string的值,但是我如何传递这个函数的测试数据呢?或者,哈希表的测试数据是如何生成的?只要你给随机数发生器添加种子,大多数RNG就没有什么不可预测的,因此可以成为一种合理的统一方法(在概率意义上)例如,不必测试Int32范围内的每个数字的覆盖率。例如,我在序列化测试中使用此方法。如果为随机生成器种子,则不会获得随机值。:)我的问题是,为了测试具有哈希表的函数,需要生成什么样的数据type@Guffa-不,但您可以生成分布广泛的均匀值,以提供烟雾测试,而无需测试所有可能的值。
        Random rand = new Random(123456); // note seed
        Dictionary<int, double> lookup = new Dictionary<int, double>();
        for (int i = 0; i < 5000; i++)
        {
            lookup[rand.Next(100000)] = rand.NextDouble();
        }