簡體   English   中英

C# NUnit 中是否有任何替代方案可用於 AssemblyTearDown

[英]is there any alternative in C# NUnit for AssemblyTearDown

如果有一個屬性可以修飾名為 AssemblyTearDown 的靜態方法,那就太好了。 它將標記在程序集中的所有測試都運行后應該調用的方法,以允許釋放程序集獲得的資源。

  • 它需要應用於靜態方法
  • 它將在所有其他 TearDown 處理完畢后調用。
  • 它不需要位於具有測試方法的類中。
  • NUnit 應該只允許在一個程序集中用這個屬性修飾一個方法。

[AssemblyTearDown] - nunit 3.0 不支持

在 c# nunit 中是否有任何替代方案可以用來代替 AssemblyTearDown。 將在處理完所有其他 TearDown 后調用它

盡管這個問題已經有將近幾年的歷史了,但似乎沒有答案。 經過一番研究,我今天從NUnit 的 [SetUpFixture] 文檔中找到了答案。

我認為這應該涵蓋滿足 OP 要求的大多數基礎:

本質上,如果您在任何命名空間之外使用[SetUpFixture]屬性裝飾一個類,並在該類中創建一個使用[OneTimeTearDown]屬性裝飾的方法,則該方法將在所有測試執行完成后執行一次

請注意, [SetUpFixture]屬性也可用於為給定命名空間中的一組測試提供一次性設置/拆卸,而根據 OP 的要求,如果該屬性應用於任何命名空間之外的類,一次性設置和拆卸方法(分別用[OneTimeSetUp][OneTimeTearDown] )為整個程序集提供設置/拆卸。

文檔中的示例代碼:

using System;
using NUnit.Framework;

namespace NUnit.Tests
{
  [SetUpFixture]
  public class MySetUpClass
  {
    [OneTimeSetUp]
    public void RunBeforeAnyTests()
    {
      // ...
    }

    [OneTimeTearDown]
    public void RunAfterAnyTests()
    {
      // ...
    }
  }
}

希望這對以后的人有用!

我花了一些時間才意識到在任何命名空間之外意味着不應該存在命名空間。 此外,如果方法是靜態的,我也沒有看到任何區別,類和方法名稱可以是任何有效名稱,這是對我有用的代碼:

using NUnit.Framework;

[SetUpFixture]
public static class AssemblyCleanFixture
{
    [OneTimeTearDown]
    public static void RunOnAssemblyCleanUp()
    {
        //Your code here
    }
}

暫無
暫無

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

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