我正在使用 Visual Studio 进行测试驱动开发的第一步。我对如何使用 VS 2010 实现泛型类有一些疑问。
首先,假设我想实现我自己的 ArrayList 版本。我首先创建以下测试(在本例中我使用的是 MSTest):
[TestMethod]
public void Add_10_Items_Remove_10_Items_Check_Size_Is_Zero() {
var myArrayList = new MyArrayList<int>();
for (int i = 0; i < 10; ++i) {
myArrayList.Add(i);
}
for (int i = 0; i < 10; ++i) {
myArrayList.RemoveAt(0); //should this mean RemoveAt(int) or RemoveAt(T)?
//VS doesn't know. Any work arounds?
}
int expected = 0;
int actual = myArrayList.Size;
Assert.AreEqual(expected, actual);
}
我正在使用 VS 2010 的能力打
Ctrl + 。
并让它在旅途中实现类/方法。
- 在实现泛型类时我遇到了一些麻烦。例如,当我定义一个
.Add(10)
方法时,VS 不知道我想要一个泛型方法(因为该类是泛型的)还是一个Add(int number)
方法。有没有办法区分这个? - 返回类型也会发生同样的情况。假设我正在实现一个
MyStack
堆栈,并且我想测试在我推送和元素并弹出它之后,堆栈是否仍然是空的。我们都知道 pop 应该返回一些东西,但通常,这个测试的代码不应该关心它。然后 Visual Studio 会认为 pop 是一个 void 方法,这实际上不是人们想要的。如何处理?对于每种方法,我是否应该首先进行“非常具体”的测试,例如很明显该方法应该返回一些东西,这样我就不会得到这种歧义?即使不使用结果,我应该有类似的东西int popValue = myStack.Pop()
吗? - 我应该如何对泛型类进行测试?仅使用一种通用类型进行测试?我一直在使用
int
s,因为它们易于使用,但我是否也应该使用不同类型的对象进行测试?你通常如何处理这个问题? - 我看到有一个名为 TestDriven for .NET 的流行工具。随着 VS 2010 的发布,它是否仍然有用,或者它的许多功能现在是 VS 2010 的一部分,使它有点无用?
- 每当我在测试代码中定义一个新属性并要求 VS 为我生成该方法存根时,它都会生成一个 getter 和一个 setter。如果我有类似的事情
int val = MyClass.MyProperty
我想了解(至少现在)我只想定义一个吸气剂。
谢谢