代码之家  ›  专栏  ›  技术社区  ›  jrharshath

我应该如何在我的项目中组织测试用例?

  •  0
  • jrharshath  · 技术社区  · 16 年前

    我有一个像这样的项目:

    xdc/
      hubactions/
        hubconnection.cpp
        hubconnection.h
      uiinterface/
        readme
        uiconnection.cpp
        uiconnection.h
        ...
      uiactions/
        readme
        connectaction.cpp
        connectaction.h
        quitaction.cpp
        quitaction.h
        ...
      utils/
        parser.cpp
        parser.h
        ...
    

    现在我想在项目变得太大之前开始测试。

    那么我应该如何组织我的测试呢?我想出了两个选择:

    方案1

    xdc/
      hubactions/
        hubconnection.cpp
        hubconnection.h
      uiinterface/
        readme
        uiconnection.cpp
        uiconnection.h
        ...
      uiactions/
        readme
        connectaction.cpp
        connectaction.h
        quitaction.cpp
        quitaction.h
        ...
      utils/
        parser.cpp
        parser.h
        ...
      tests/
        utils/
          parsertest.cpp
        uiinterface/
          uiconnectiontest.cpp
        uiactions/
          connectactiontest.cpp
          quitactiontest.cpp
        hubactions/
          fakehubconnection.cpp
          fakehubconnection.h
        ...
    

    选项2

    xdc/
      hubactions/
        tests/
          fakehubconnection.cpp
          fakehubconnection.h
        hubconnection.cpp
        hubconnection.h
      uiinterface/
        tests/
          uiconnectiontest.cpp
        readme
        uiconnection.cpp
        uiconnection.h
        ...
      uiactions/
        tests/
          connectactiontest.cpp
          quitactiontest.cpp
        readme
        connectaction.cpp
        connectaction.h
        quitaction.cpp
        quitaction.h
        ...
      utils/
        tests/
          parsertest.cpp
        parser.cpp
        parser.h
        ...
    

    哪种方法更好?我能用不同的/更好的方式来做吗?

    谢谢!

    3 回复  |  直到 16 年前
        1
  •  1
  •   SingleShot    16 年前

    我喜欢Apache软件基金会(ASF)及其主要构建工具之后的代码结构, Maven . 这种结构是以Java为中心的,但可以应用于其他语言。这个 best C++ plug-in for Maven 在我看来,遵循ASF结构的C++是这样的:

    project/
      /src
        /main
          /include
          /c++
        /test
          /include
          /c++
    

    我使用这个结构,它运行良好,并且与用其他语言编写的项目一致。

        2
  •  1
  •   Glen    16 年前

    我认为没有更好的选择。

    我个人执行选项2,因为它使测试物理上接近被测试的代码。

    也就是说,我相信会有人提出使用选项1的完美理由。

    第三种选择(我真的不喜欢)可能是用正在测试的代码存储测试(见下文)。但是,这会使您的目录结构过于混乱。

    xdc/
      hubactions/
        fakehubconnection.cpp
        fakehubconnection.h
        hubconnection.cpp
        hubconnection.h
      uiinterface/
        uiconnectiontest.cpp
        readme
        uiconnection.cpp
        uiconnection.h
        ...
      uiactions/
        connectactiontest.cpp
        quitactiontest.cpp
        readme
        connectaction.cpp
        connectaction.h
        quitaction.cpp
        quitaction.h
        ...
      utils/
        parsertest.cpp
        parser.cpp
        parser.h
        ...
    
        3
  •  1
  •   Johan    16 年前

    选项1的一个论点是,这使得生产代码和测试代码之间的分离更加清晰。因此,测试代码不太可能成为生产代码的一部分。