NUnit TestFixtures не работают с RestSharp

#c# #automated-tests #nunit #hook #restsharp

#c# #автоматизированные тесты #nunit #перехват #restsharp

Вопрос:

Я пытаюсь использовать NUnit TestAttributes для создания и удаления RestSharp RestClient

https://github.com/nunit/docs/wiki/TestFixture-Attribute

 using NUnit.Framework;
using RestSharp;

namespace Sanitized.Sanitized.Steps
{
    [TestFixture]
    public class SetupAndTeardown
    {
        public RestClient restClient;

        [SetUp]
        public void Init()
        {

            restClient = new RestClient();
        }

        [TearDown]
        public void Cleanup()
        {

            restClient = null;
        }
    }
}
  

Но я получаю ошибку Object reference not set to an instance of an object. при попытке использовать это в другом классе, т. Е. С моими автоматизированными шагами.

Я не понимаю этого, поскольку я думал, что код, который находится в [SetUp] [Teardown] атрибутах, вызывается в начале и в конце теста соответственно.

Комментарии:

1. Хорошо, но где тест? > So long as the class contains at least one method marked with the Test, TestCase or TestCaseSource attribute, it will be treated as a test fixture.

2. Также следует взглянуть на github.com/nunit/docs/wiki/SetUp-and-TearDown-Changes

3. также вы случайно используете async?

4. Я не использую async . Я не уверен, куда поместить [TestCase]

5. Думаю, я мог столкнуться с проблемой. NUnit TestFixtures полагайтесь на наследование, и мои методы тестирования (которые находятся в другом классе) уже наследуют другой класс. Поскольку C # не поддерживает множественное наследование, я не думаю, что смогу использовать TestFixtures . Я прав?

Ответ №1:

Вы создали TestFixture , который представляет собой класс, содержащий тесты. Если бы у устройства были какие-либо тесты, то NUnit запустил бы их, а также запустил бы настройку перед каждым тестом и демонтаж после каждого теста. Поскольку у вас нет тестов, этого не происходит. NUnit распознает приспособление, но не находит ничего для запуска там.

Вы говорите, что у вас проблема, когда вы «используете» это приспособление в другом классе. Тестовые приспособления не предназначены для «использования» другим кодом. Скорее, они выполняются NUnit.

Для лучшего ответа о том, как сделать то, что вы пытаетесь сделать, нам сначала нужно знать, что вы пытаетесь сделать. Когда вы хотите запустить «setup» и «teardown»? Как часто они должны выполняться? В зависимости от этих вещей я могу обновить этот ответ.

Далее отвечаю на ваш комментарий… Если ваши тесты находятся в другом классе, то этот класс является вашим тестовым инструментом. Есть ли причина, по которой вы не хотите, чтобы это было приспособлением?