#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»? Как часто они должны выполняться? В зависимости от этих вещей я могу обновить этот ответ.
Далее отвечаю на ваш комментарий… Если ваши тесты находятся в другом классе, то этот класс является вашим тестовым инструментом. Есть ли причина, по которой вы не хотите, чтобы это было приспособлением?