2009-09-14 38 views
0

我有一个项目,看起来像这样:我应该如何在我的项目中组织测试用例?

 
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 
    ... 

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

谢谢!

回答

1

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

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

我用这个结构和它的作品顺利,并与其他语言编写的我的项目是一致的。

+0

谢谢,我现在正在为此项目选择此方法:) – jrharshath 2009-09-20 07:19:52

1

我不认为有更好的选择。

我个人倾向于选项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 
    ... 
1

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

相关问题