Определите ту же настройку и демонтаж для каждого тестового прибора - PullRequest
1 голос
/ 06 апреля 2020

У меня есть проект с несколькими TestFixture, и я хочу определить один и тот же метод [SetUp] [TearDown] для каждого теста . Учитывая, что у меня есть много TestFixture, я хочу избежать редактирования всех моих файлов, чтобы добавить две инструкции.

Просмотр документации по nunit, я думал, что [SetUpFixture] было идеальным решением. Поэтому я скопировал пример и попытался запустить его, но, похоже, мой метод TearDown никогда не запускается, тогда как SetUp выполняется так, как я ожидал. Чтобы утверждать это, я просто использовал операторы throw.

Мои вопросы:

  1. Я ошибаюсь в своем случае использования? Должен ли я действовать по-другому, чтобы достичь своей цели?
  2. Я неправильно использую атрибут SetUpFixture?

Ниже приведен мой класс SetUpFixture. Я использую Nunit 3.11.

using System;
using NUnit.Framework;

namespace MyTestProject
{
  [SetUpFixture]
  public class MySetUpClass
  {
    [OneTimeSetUp]
    public void RunBeforeAnyTests()
    {
      StaticClass.Init();
//    throw new InvalidOperationException("SetUp reached");
    }

    [OneTimeTearDown]
    public void RunAfterAnyTests()
    {
      StaticClass.Finalize();
//    throw new InvalidOperationException("TearDown reached");
    }
  }
}

1 Ответ

0 голосов
/ 07 апреля 2020
  1. Ваш вариант использования в порядке, вы можете сделать это, сделав базовый класс с определенными [Setup] и [Teardown]. Если вы унаследуете, они будут выполняться один раз за тест. Это задокументировано в https://github.com/nunit/docs/wiki/SetUp-and-TearDown.

  2. Помощь не кажется мне понятной, как и ваше объяснение ваших результатов, но я бы порекомендовал попробовать некоторые точки останова или ведение журнала перед вызовами StaticClass, чтобы убедиться, что они не влияют на ваше поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...