2012-06-25 66 views
4

我有一個很大的代碼庫,有幾個(太少)的單元測試;我將代碼添加到庫中,試圖對新代碼進行單元測試(我還希望在將來獲得更多經驗時爲舊代碼添加單元測試)。我應該把單元測試放在一個單獨的庫中嗎?獨立的子目錄?

我們目前使用一個自定義的(不是很精細的)單元測試框架;我想切換到boost.test

我的圖書館佈局是:

  • mylib1(300個文件,70000行代碼)

    • SRC
        • Foo.cpp中
        • foo_part。 cpp
        • foo_part.h
        • UnitTests - 我應該把它移到mylib以外嗎?
          • foo_test1.cpp
          • foo_test2.cpp
          • foo_test3.cpp
      • 酒吧
        • bar.cpp
        • bar_part.cpp
        • bar_part.h
        • UnitTests - 它屬於這裏嗎?
          • bar_test1.cpp
          • bar_test2.cpp
          • bar_test3.cpp
    • 包括
      • foo.h中
      • bar.h
  • mylib2(70個文件,7000行的代碼)

    • 看起來像上述
  • UnitTestFramework

    • SRC
      • MockObject1的mylib1。 cpp - 它屬於這裏嗎?
      • Asserter.cpp - boost.test將取代它
      • TestFixture.cpp - boost.test將取代它
    • 包括
      • MockObject1.h
      • Asserter.h - boost.test將取代它
      • TestFixture.h - boost.test將取代它

我在這裏提出以下問題:

  • 是否應單元測試是mylib DLL的一部分嗎? (我將mylib1mylib2鏈接到一個DLL中)
  • 單元測試的源代碼是否應位於mylib1目錄下?
  • 因爲我有mylib1mylib2,應該如何找到相應的單元測試 - 在兄弟目錄中,在一起等?
  • 我應該在哪裏放置模擬對象的源代碼? (他們服務都mylib1mylib2

回答

1
  1. 單元測試是各種類型的文檔,所以我會離開的目錄結構,因爲它是
  2. 嘲笑/假貨是在單元測試幫手,所以我不會將它們留在源目錄中。在源中創建一個新目錄,並將其移動到那裏。

事實上,我甚至會進一步簡化它:

+ mylib1 (300 files, 70000 lines of code) 
    + unit_tests 
     + test_foo.cpp 
     + test_bar.cpp 
    + mocks 
     + mock_foo.hpp 
     + mock_bar.hpp 
    + foo.cpp 
    + foo.hpp 
    + bar.cpp 
    + bar.hpp 
+ mylib2 
similar as for mylib1 
+0

有沒有機會,我打算通過餡所有300個文件放到一個目錄下的「簡化」樹形結構。所以我想這個答案大多是說「不要改變單元測試的位置,它們在正確的位置」。 – anatolyg

相關問題