[英]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.