Добавление дополнительной информации в файл TestResult.xml из NUnit

StackOverflow https://stackoverflow.com/questions/44617

  •  09-06-2019
  •  | 
  •  

Вопрос

Я хотел бы иметь возможность добавить «сообщение» к модульному тесту, чтобы оно фактически отображалось в файле TestResult.xml, созданном NUnit.Например, это сейчас генерируется:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" />
</results>

Я хотел бы иметь дополнительный атрибут (или узел в зависимости от обстоятельств), например:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" message="Tested that some condition was met." />
</results>

Идея состоит в том, что приведенное выше «сообщение» каким-то образом будет определено внутри самого метода тестирования (в моем случае оно будет сгенерировано во время выполнения).Есть ли где-нибудь свойство, которого мне не хватает, чтобы иметь возможность сделать что-то подобное?

Это было полезно?

Решение

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

Если это окажется абсолютно необходимым, я думаю, вам нужно будет создать свой собственный тест-раннер, который (навскидку) считывал бы дополнительный атрибут из TestCase и присоединял его к выводу.

Другие советы

В последних выпусках NUnit вы можете:

Assert.AreEqual(250.00, destination.Balance, "some message here");

Где «Некоторое сообщение здесь» может быть постоянным сообщением или сообщением, созданным во время выполнения и сохраненным в строковой переменной.Однако эти сообщения появятся в выходных данных только в том случае, если утверждение не выполнено.Однако обычно вам нужна информация только о неудачных тестах, поэтому я рекомендую создавать строку, добавляя каждое предыдущее сообщение, а затем использовать эту строковую переменную в качестве сообщения во всех ваших утверждениях.Это позволяет вам получить всю необходимую информацию из неудачных тестов.

Я не вижу ничего доступного во время выполнения, но есть несколько функций, которые вы, возможно, захотите изучить:тот Описание атрибут и Свойство Оба атрибута добавляют текст в выходной XML-файл.К сожалению, они оба определяются во время компиляции.

Вы можете использовать TestContext, чтобы легко написать любое сообщение, которое захотите.Вот как я настроен.

Каждый из моих тестов унаследован от класса тестовой базы.Это удаляет избыточный код.

[TestFixture]
public class TestBase
{

    public IWebDriver driver;

    //[OneTimeSetUp] and [OneTimeTearDown] go here if needed

    [SetUp]
    public void Setup(){
         driver = Shortcuts.SetDriver("my browser");
    }

    [TearDown]
    public void TearDown()
    {
        driver.Quit();
        Comment("@Result: " + TestContext.CurrentContext.Result.Outcome.ToString());
    }

    public void Comment(string _comment)
    {
        TestContext.Out.WriteLine(_comment);
    }
    public void Error(string _error)
    {
        TestContext.Error.WriteLine(_error);
    }

}

Вы можете видеть, что две нижние функции записывают любое сообщение или ошибку в указанный TestContext.Это также будет хорошо работать с парализуемыми тестами.

Затем я могу использовать этот родительский класс для настройки своих тестов и записи на консоль.

//Role Management
public class RoleManagementTests : TestBase
{
    [TestCase]
    public void RoleManagement_7777_1()
    {
        Comment("Expected: User has the ability to view all roles in the system.");
        //Test goes here
    }
}

Теперь вы можете увидеть результаты в выходных данных (Visual Studio) и в файле TestResult.xml с помощью NUnit Console Runner.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top