我正在使用Visual Studio进行测试驱动开发的第一步。我有一些关于如何使用VS 2010实现泛型类的问题。Visual Studio 2010和测试驱动开发
首先,让我们说我想实现我自己的ArrayList版本。
[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 +: 我创建了下面的测试(我使用的是在这种情况下MSTest的)开始。
并让它在旅途中实现类/方法。
- 我在实现泛型类时遇到了一些麻烦。例如,当我定义一个
.Add(10)
方法时,VS不知道我是否打算使用泛型方法(因为该类是通用的)或方法Add(int number)
。有什么办法可以区分这一点吗? - 返回类型也会发生同样的情况。假设我正在实现一个
MyStack
堆栈,并且我想测试在我推入元素并弹出它之后,堆栈仍然是空的。我们都知道流行应该返回一些东西,但通常这个测试的代码不应该关心它。然后Visual Studio会认为pop是一个无效的方法,实际上并不是人们想要的。如何处理这个?对于每种方法,我是否应该先做出“非常具体”的测试,比如显而易见的方法应该返回一些东西,这样我就不会产生这种模糊性?即使不使用结果,我是否应该有类似int popValue = myStack.Pop()
的东西? - 我应该如何对泛型类进行测试?只用一种通用类型的测试?我一直在使用
int
,因为它们很容易使用,但我是否也应该使用不同类型的对象进行测试?你通常如何处理这个问题? - 我看到有一个名为TestDriven for .NET的流行工具。随着VS 2010的发布,它仍然是有用的,或者它的许多功能现在成为VS 2010的一部分,渲染它有点没用?
- 每当我在我的测试代码中定义一个新属性,并要求VS为我生成该方法存根时,它会同时生成一个getter和一个setter。如果我有类似
int val = MyClass.MyProperty
的东西,我想了解(至少)我只想定义一个getter。
感谢
对于#4,你的意思是从Visual Studio内部运行测试,还是一般运行测试? – R0MANARMY 2010-05-16 17:44:38
在Visual Studio里面。 – 2010-05-16 17:45:50
如果你有5个不连续的问题,难道它不会让每个人的生活更容易发布每个问题作为一个单独的问题吗? – 2010-06-09 18:26:49