visual-studio - Visual Studio 2010 和测试驱动开发

标签 visual-studio unit-testing tdd mstest testdriven.net

我正在使用 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 为我生成该方法 stub 时,它会同时生成一个 getter 和一个 setter。如果我有类似 int val = MyClass.MyProperty 的东西我想明白(至少现在)我只想定义一个 setter/getter 。

  • 谢谢

    最佳答案

    I see there is a popular tool called TestDriven for .NET. With VS 2010 release, is it still useful, or a lot of its features are now part of VS 2010, rendering it kinda useless?



    如果您使用多种不同的单元测试框架之一( nunitmbunitxunitcsunit 等),它仍然很有用。

    还有其他工具(如 Visual Nunit )为运行单元测试提供 Visual Studio 集成。

    关于visual-studio - Visual Studio 2010 和测试驱动开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844735/

    相关文章:

    sql-server - 如何对持久性进行单元测试?

    javascript - Promise resolve 后如何正确测试 setTimeout

    c++ - Visual Studio C++ 并发编程

    ios - Visual Studio 远程构建失败,出现错误 - 1

    c++ - 在Visual C++项目中添加文件夹

    c# - 如何使用 FakeItEasy 断言未调用方法

    unit-testing - 单元测试太慢有多慢?

    c# - 如何防止我的文本框在回发时清除文本。

    c# - 没有 setter 的模拟对象

    tdd - TDD 单元测试中的数据检索