簡體   English   中英

在單元測試中保持價值

[英]Holding a Value in Unit tests

我有一個問題你們。我有兩個單元測試,它們正在調用webservices。一個單元測試返回的值應該用於另一個單元測試方法

namespace TestProject1
{
    public class UnitTest1
    {
        String TID = string.empty;

        public void test1
        {
           //calling webservices and code

           Assert.AreNotEqual(HoID, hID);
           TID = hID;
        }

        public void test2
        {
           //calling webservices and code            
           string HID = TID  // I need the TID value from the Above testcase here

           Assert.AreNotEqual(HID, hID);            
        }
    }
}

如何在一個unittest中存儲一個值,並在另一個unittest中使用該值。

通常,您不應該像這樣編寫測試。 您無法確保您的測試以任何特定順序運行,因此沒有很好的方法來執行此操作。

而是使測試獨立,但將公共部分重構為它自己的(非測試)方法,您可以將其作為另一個測試的一部分進行調用。

不要重復使用任何值。 運行測試的順序通常是隨機的(大多數常見的運行程序,如NUnit和Resharper的隨機運行測試,有些甚至可能並行執行)。 相反,只需在第二次測試中再次調用Web服務(即使這意味着有2個 Web服務調用)並檢索所需的值。

每個測試(無論是單元還是集成)都應具有可供其運行的所有數據/依賴項。 您永遠不應該依賴其他測試來設置環境/數據,因為這不是他們所寫的。

隔離想想你的測試-每一次測試是一個獨立的存在,即建立,執行,並清除一切必要行使特定的場景。

這是一個例子,按照Oleksi的大綱,你可以如何組織這個

String TID = string.empty;

[TestFixtureSetUp]
public void Given() {
  //calling webservices and code
  TID = hID;
  //calling webservices and code
}

[Test]
public void assertions_call_1() {
   ...
}

public void assertions_on_call_2() {
   if (string.IsNullOrEmpty(TID))
     Assert.Inconclusive("Prerequisites for test not met");
   ...
}

暫無
暫無

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

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