簡體   English   中英

單元測試。 關於獨立測試

[英]Unit testing. About independent tests

在降級我的問題之前,請聽:)我使用單元測試。 而且我知道他們必須彼此獨立。 雖然如何測試書庫。 必須先創建第一本書,然后進行更新然后刪除。 我有三個單元測試。 依賴這些單元測試不是對的嗎?

   [TestFixture]
    public class CompanyRepositoryTests
    {
        public void CreateCompany()
        {
           // This must be called 1
        }

        public void UpdateCompany()
        {
           // This must be called 2
        }

        public void DeleteCompany()
        {
            // This must be called 3
        }
    }

關於單元測試(與集成測試相對)的一件事是,它們僅應測試一種方法。 因此,例如,如果您有一個如下所示的方法:

public void createCompany(Company c) {
  if (c == null) {
    throw new NullPointerException();
  }
  database.create(c);
}

一個好的測試只能測試兩件事:

  1. 如果傳入null ,則拋出NullPointerException
  2. 如果傳入非null則調用database.create()

database.create()是否真正有用嗎是另一個問題。 這與對數據庫進行單元測試有關。

在您的情況下,請根據建議模擬基礎存儲,並編寫適當的單元測試。

另一方面,在集成測試中,具有依賴關系顯然很好。 即使這樣,您的測試也應該看起來像

  • 測試1:全新的數據庫:創建公司,並確保其存在。
  • 測試2:全新的數據庫:創建一個公司,將其刪除,確保它不存在。
  • 測試3:新數據庫:創建公司,對其進行修改,確保其正常工作。

每個測試都應該從頭開始。

在本練習中,您將學習如何測試修改數據庫的CRUD操作。 要考慮的前提之一是測試不一定按特定順序運行。 另一個是,每個測試可以根據需要執行多次。 因此,您的測試不應依賴於先前的測試執行。 例如,如果您的測試要刪除數據庫中的記錄,則測試的設置應提供要刪除的記錄。 這樣,可以重復執行測試。

關於單元測試的好教程

您可以模擬依賴項。

看看http://code.google.com/p/mockito/

暫無
暫無

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

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