我想讓我的TearDown方法在應用某些邏輯之前檢查先前的測試是否成功。是否有捷徑可尋?NUnit - 是否可以在TearDown中檢查測試是否成功?
回答
只有當你手動執行此操作。事實上,你甚至不知道哪些測試打算運行。在NUnit IDE中,可以啓用一些測試並禁用其他一些測試。如果你想知道一些具體的測試已經用完,您可以包括這樣的代碼在你的測試類:
enum TestStateEnum { DISABLED, FAILED, SUCCEDED };
TestStateEnum test1State = TestStateEnum.DISABLED;
[Test]
void Test1()
{
test1State = TestStateEnum.FAILED; // On the beginning of your test
...
test1State = TestStateEnum.SUCCEDED; // On the End of your Test
}
然後你可以檢查test1State變量。如果測試引發異常,則不會設置SUCCEDED。你也可以把它放進一個嘗試捕捉終於在您的測試塊以稍微不同的邏輯:
[Test]
void Test1()
{
test1State = TestStateEnum.SUCCEDED; // On the beginning of your test
try
{
... // Your Test
}
catch(Exception)
{
test1State = TestStateEnum.FAILED;
throw; // Rethrows the Exception
}
}
它不是試圖告訴哪個測試運行,只是我想拋出一個不同的錯誤,所以我可以得到更準確的堆棧跟蹤 – 2009-09-24 19:11:04
恕我直言推倒邏輯應該是獨立的測試結果。
理想情況下,你應該避免完全使用setup和teardown,al xunit.net。有關更多信息,請參閱here。
通常,絕對那是你應該做的。不過,我喜歡讓自己的測試保持乾淨和內聚的BDD風格。有時候這意味着通過lambdas設置givens和assert並在TearDown中執行它們。問題是,如果由於某種原因安裝程序或測試機構失敗,堆棧跟蹤令人困惑。 – 2009-09-24 19:09:32
對於類似的SO問題,這已經在Ran's answer中解決了。引用Ran:
從版本2.5.7開始,NUnit允許Teardown檢測最後一次測試是否失敗。 新的TestContext類允許測試訪問關於它們自己的信息,包括TestStauts。
有關詳細信息,請如果你想使用TearDown中檢測與NUnit的3.5最後一次測試的狀態是指http://nunit.org/?p=releaseNotes&r=2.5.7
[TearDown]
public void TearDown()
{
if (TestContext.CurrentContext.Result.Status == TestStatus.Failed)
{
PerformCleanUpFromTest();
}
}
感謝您的鏈接。請注意,這個問題在David回答之前的一年半內發佈。 – 2013-05-06 20:00:22
在Nunit 3.x中它是'if(TestContext.CurrentContext.Result.Outcome == ResultState.Failure)' – Lukas 2016-07-11 15:44:18
它應該是:
[TearDown]
public void TearDown()
{
if (TestContext.CurrentContext.Result.Outcome.Status.Equals(TestStatus.Failed))
{
//your code
}
}
- 1. 是否可以檢測Update_all是否成功?
- 2. 如何檢查Google Test TearDown()中的測試是否失敗?
- 3. 是否可以在Gallio中運行NUnit 2.5.3測試?
- 4. 單元測試setUp/tearDown是否在異步測試中工作?
- 5. 檢查EndExecuteNonQuery是否成功
- 6. 檢查sp_send_dbmail是否成功
- 7. 檢查INSERT是否成功
- 8. 檢查是否sendsynchronousrequest成功
- 9. 檢查startScan是否成功
- 10. qtreeview測試是否可檢查項目
- 11. 檢查wget是否在Rails中成功
- 12. 檢查DSQuery在PowerShell中是否成功?
- 13. 在CodeIgniter中檢查update_batch()是否成功
- 14. 如何檢查項目是否爲測試項目? (NUnit,MSTest,xUnit)
- 15. 檢查迴文是否可以形成
- 16. 測試以查看導航屬性是否可以檢索值
- 17. 是否可以有效檢查STL std :: deque擦除是否成功?
- 18. 是否可以從主要方法運行NUnit測試
- 19. 是否可以參數化一個nunit測試
- 20. 檢查R中的write.csv是否成功
- 21. 是否可以檢查是否完成按鈕被按下
- 22. 是否可以檢查java.lang.NumberFormatException?
- 23. 如何在NUnit TearDown上知道測試是否拋出異常以及該異常是什麼?
- 24. 是否可以檢查是否在CSV文件中存在串
- 25. 檢查`isql`查詢是否成功
- 26. 執行檢查Perl測試是否(並且只有)測試用例成功
- 27. 測試Path.relativize()是否會成功?
- 28. 如何測試document.write()是否成功
- 29. 是否可以在rspec功能測試中調用truncate方法?
- 30. NUnit:是否可以配置NUnit測試失敗,如果沒有Assert執行
那是令人沮喪的,我會期望某種NUnit.CurrentTestContext API。我只需要知道測試是否成功,因爲如果測試失敗,我可以提供更多信息來幫助進行調試。 – 2009-09-24 19:14:49