簡體   English   中英

單元測試JSON輸出模塊,最佳實踐

[英]Unit testing JSON output module, best practices

我目前正在研究一個模塊,它接受我們的業務對象之一並將該對象的json表示返回給調用者。 由於我們環境的限制,我無法使用任何現有的json編寫器,因此我編寫了自己的json編寫器,然后業務對象編寫器使用它來序列化我的對象。 json編寫器以類似於此的方式進行測試

@Test
public void writeEmptyArrayTest() 
{
   String expected = "[  ]";
   writer.array().endArray();
   assertEquals(expected, writer.toString());
}

這是唯一可管理的,因為每個指令產生的輸出很小,即使我一直覺得必須有更好的方法。

我現在面臨的問題是為對象編寫器模塊編寫測試,其中輸出更大,更易於管理。 在預期的字符串中拼寫錯誤的風險使我的測試變得非常糟糕,從長遠來看,以這種方式編寫代碼似乎既愚蠢又無法管理。 我一直覺得我想寫測試以確保我的測試表現正常,這種感覺讓我擔心。

這樣做的更好方法是什么?

從技術上講,部署代碼的環境與開發代碼的環境不同,因此我將使用現有的JSON讀取器/編寫器來測試您創建的代碼。 如果您正在使用maven,您甚至可以設置您選擇用於“測試”的JSON包的范圍,以便它不會包含在實際構建中。

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20090911</version>
  <scope>test</scope>
</dependency>

或者,您可以從JSON編寫器繼承您的單元測試。 通過繼承,您可以測試所有受保護和私有內部位,而不是檢查實際的String輸出。

由於您不能在服務器端代碼中使用外部庫,可能更好的方法是將api單元測試限制為必要: - 測試原始對象序列化 - 測試陣列序列化 - 測試特殊字符序列化 - ...

然后將部分測試移動到客戶端(使用JSON解析器確保至少您的JSON有效)。 一旦發現瀏覽器腳本執行上的錯誤,請修復它並編寫相關的單元測試,以確保它在將來的版本中不再出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM