2013-07-12 161 views
3

我試圖使用doxygen來記錄我的單元測試,但我想記錄它們與代碼而不是在測試頭中的行,以減少複製/粘貼錯誤時進行類似的測試。值得注意的是,我正在使用RTF輸出格式。記錄單元測試符合代碼

/** @brief A method for testing doxygen method documentation 
    * @test 
    *  -#Step 1 
    *  -#Step 2 
    *  -#Step 3 
    */ 
    [TestMethod()] 
    public void DoxygenScratchPadInHeader() 
    { 
     // code that may or may not be in sync with header 
    } 

    /** @brief A method for testing doxygen method documentation 
    * @test 
    */ 
    [TestMethod()] 
    public void DoxygenScratchPadInLine() 
    { 
     /// @par 
     ///  -# Initialize the value to 0 
     int i = 0; 

     /// @par 
     ///  -# Add a number 
     i += 3; 

     /// @par 
     ///  -# Assert that the number is three 
     Assert.AreEqual(3, i); 
    } 

測試列表輸出:

會員UpdateProtocolQATests.CUpdateProtocolTest.DoxygenScratchPadInHeader()

  1. 步驟1
  2. 步驟2
  3. 步驟3

會員UpdateProt ocolQATests.CUpdateProtocolTest.DoxygenScratchPadInLine()

{注意這裏沒有臺階}

功能描述輸出:

空隙UpdateProtocolQATests.CUpdateProtocolTest.DoxygenScratchPadInHeader()

一種用於測試doxygen的方法的文檔的方法。 測試:

  1. 步驟1
  2. 步驟2
  3. 步驟3

空隙UpdateProtocolQATests.CUpdateProtocolTest.DoxygenScratchPadInLine()

一種用於測試doxygen的方法的文檔的方法。 測試:

1. Initialize the value to 0 


1. Add a number 


1. Assert that the number is three 

{顯示最後一位爲代碼,因爲計算器是糾正重複1. 1. 2. 3 ...這是我真正想要的到底是...}

任何更好的想法來實現在線測試步驟文檔?我不太關心沒有出現在測試列表中的步驟,我們只能參考這些功能。

+0

有時需要滿足監管要求。 FDA不專注於理解明確的代碼,他們有時希望以段落形式列出所有內容。我的測試不到十行代碼,很容易被開發人員理解,但不一定非開發人員。 –

+0

這種模式的評論比代碼更多,在我與之合作的醫療設備公司中相當標準。 –

+1

你有一個很好的觀點;我想我們都已經讀過關於Therac-25的某個或那個點。對於無建樹的評論感到抱歉。 – Augusto

回答

0

使用,它支持從內部註釋文檔生成工具:

Doxygen的具有helpers for perl,這是什麼NaturalDocs是寫在

+1

客戶需要Doxygen。另一個工具不是一個選項。 –

0

我我非常同情你的困境,但據我所知,Doxygen確實是只有設計用於記錄特定的代碼對象(文件,類,名稱空間,變量等),而不是任意代碼行。

目前,我能想到的唯一可能性就是要避免這個缺點,即生成包含您想要通過\code command記錄的實際代碼的註釋。

有兩種方法我能想到的實現這一點:

  1. 將某種特殊字符串(比如,例如DOXY_INLINE_CODE)在應與一行代碼相關聯的強力黴素評論。然後編寫一個篩選器(請參閱FILTER_PATTERNS)以將此字符串替換爲\code <nextline> \endcode,其中<nextline>是篩選器看到的下一行代碼。我不確定Doxygen會將這些評論放在哪裏,或者他們會如何看待;不幸的是,他們可能很醜陋。 (我不喜歡的一個奇怪的行爲是\code命令似乎去掉前導空格,所以你不會得到縮進才能正常工作。)
  2. 編寫一個「Doxygen runner」,在調用doxygen之前自動生成.dox文件。這些自動生成的.dox文件將包含從相應的.cpp或其他源文件生成的文檔。您可以將各種Doxygen命令用於link back to實際源代碼的文檔,您也可以在源代碼文檔中的.dox文檔的insert a copy(反之亦然)。

這些都是駭客,你必須用Doxygen搗鼓它才能很好地處理這種情況,但我希望這些建議有所幫助。祝你好運。 (我目前正在做一些類似的工作,讓Doxygen很好地記錄Google測試,同時也在一個高度監管行業的項目環境中)。

0

我記得在遇到這個問題時,我正在尋找類似的方案我想記錄用戶測試程序儘可能接近他們相應的單元測試或單元測試組。以下是我們用Doxygen組/子組實施的解決方案的子集。

單獨的manual-test.dox文件被定義爲創建一個頂級組和幾個子組,在該組下面收集特定的手動測試。

/** 
@defgroup manualtest Manual Testing Instructions 
@{ 
This section contains a collection of manual testing... 

@defgroup menutest Menu Tests 

@defgroup exporttest Import/Export Tests 

@} 
*/ 

下面顯示了帶單元測試文檔和手動測試說明的Java單元測試類的示例。

public MenuTests { 
    ... 

    /** 
    * @addtogroup menutest 
    * **Open File Test** 
    * 
    * The purpose of this test is to... 
    * 
    * -# Do something 
    * -# Verify something 
    */ 
    /** 
    * This unit test verifies that the given file can be created via 
    * the File->Open... menu handler. It... 
    */ 
    @Test 
    public void open_file_test() { 
     ... 
    } 

生成的HTML文件將包括手工測試指令頁 下模塊部分。所述頁面將包含如manual-test.dox中給出的標記細節以及用於每個定義的子組的模塊頁面的鏈接,諸如菜單測試

菜單測試頁面將顯示加入到這一 子組中的所有手動單元測試步驟,從而提供可以包括在由參考 作爲軟件測試計劃或用戶測試計劃的一部分的單獨的文件。

唯一需要注意的是,沒有辦法明確定義將測試說明添加到組中的順序。在單個類中定義時,按照它們定義的順序添加它們,並按字母順序解析多個類。

對於需要更多控制如何收集測試的項目,Doxygen用於創建XML輸出。測試用例使用XSLT模板提取並根據需要進行排序,但這是另一個問題。