哪些对象类型最适合编写泛型集合的单元测试?显然,如果我在我的应用程序中以特定方式使用它们,最好使用这些类型进行测试。但是,如果我不是,只是创建一个实用程序库,我应该使用哪些类型?
我试图避免使用特定对象类型的任何陷阱。例如,在测试通用字典结构时,我知道GetHashCode
和Equals
方法对于确保有效测试非常重要。我担心如果我只是使用虚拟object
个实例(var a = new object();
),我会遇到这些方法不够健全的问题。
我考虑将GUID
个实例用于我的所有单元测试,因为它们必然具有独特的约束。但是,作为结构体,如果需要,我无法测试等效参考。
最后,在使用特定对象实现(例如object
或GUID
)代替通用类型进行单元测试时,是否还有其他需要注意的问题?
答案 0 :(得分:2)
如果您想要彻底,您应该测试几种类型:
int
Equals
+ GetHashCode
IEqualityComparer<T>
double
或float
表示他们奇怪的NaN
语义。并非所有测试都需要进行。但我会为每个人添加至少一个测试。
答案 1 :(得分:0)
你可以使用ArrayList。使用自定义对象填充它,其中一个是像主键一样的整数,其他对象是您的数据。它不是通用的集合,但使用起来非常方便。
class MyObject
{
public int myPrimaryKey {get; set;}
public object myData {get; set;}
{
然后你要做的就是将它添加到ArrayList:
var a = new ArrayList();
a.add(new MyObject{myPrimaryKey = 1, object = 'some value'});
希望这就是你要找的东西。
答案 2 :(得分:-2)
如果您想要从System.Collections
命名空间测试通用集合,那么这是一种错误的测试方法。
您的测试应仅涵盖您的代码,但不包括您未开发的其他内容。