Nunit Extent Report для нескольких классов не сообщает правильно - PullRequest
0 голосов
/ 14 мая 2019

У меня есть Nuit Test с Extent Report 4, настроенный для нескольких классов.Я получаю результат отчета экстента правильно для первого класса, но он не сообщает о статусе 2-го класса (за один раз только один класс сообщает)

Вот класс, созданный для ExtentReprot

namespace ReportTestProject
    {
    [TestFixture]
    public class SetupFixture1
    {
        public static ExtentReports _extent;
        public static ExtentTest _test;

    [OneTimeSetUp]
    public void StartReport()
    {
        _extent = new ExtentReports();
        var dir = AppDomain.CurrentDomain.BaseDirectory.Replace("\\bin\\Debug", "");
        DirectoryInfo di = Directory.CreateDirectory(dir + "\\Test_Execution_Reports");
        var htmlReporter = new ExtentHtmlReporter(dir + "\\Test_Execution_Reports" + "\\Automation_Report" + ".html");
        _extent.AddSystemInfo("Environment", "DEV");
        _extent.AddSystemInfo("User Name", "RAKESH");
        _extent.AttachReporter(htmlReporter);

        _test = _extent.CreateTest(TestContext.CurrentContext.Test.Name);
    }

    [TearDown]
    public void aftertest()
    {
        var status = TestContext.CurrentContext.Result.Outcome.Status;
        var stacktrace = "" + TestContext.CurrentContext.Result.StackTrace + "";
        var errorMessage = TestContext.CurrentContext.Result.Message;
        Status logstatus;

        switch (status)
        {
            case TestStatus.Failed:
                logstatus = Status.Fail;
                _test.Log(logstatus, "Test " + logstatus + " – " + errorMessage + stacktrace);
                break;
            default:
                logstatus = Status.Pass;
                _test.Log(logstatus, "Test " + logstatus);
                break;
        }
    }

    [OneTimeTearDown]
    public void AfterClass()
    {
        _extent.Flush();
    }
    }
}

вот мой первый класс

namespace ReportTestProject
{
    [TestFixture]
    public class TestClass1 : SetupFixture1
    {
        [Test]
        public void PassTest1()
        {
            _test = _extent.CreateTest("PassTest1");
            var answer = 42;
            Assert.That(answer, Is.EqualTo(42), "Some useful error message");
        }

        [Test]
        public void FailTest1()
        {
            _test = _extent.CreateTest("FailTest1");
            var answer = 43;
            Assert.That(answer, Is.EqualTo(42), "answer is not 42 so test failed");
        }
    }
}

И второй класс

namespace ReportTestProject
{
    [TestFixture]
    public class TestClass : SetupFixture1
    {
        [Test]
        public void PassTest2()
        {
            _test = _extent.CreateTest("PassTest2");
            var answer = 42;
            Assert.That(answer, Is.EqualTo(42), "Some useful error message");
        }

        [Test]
        public void FailTest2()
        {
            _test = _extent.CreateTest("FailTest2");
            var answer = 43;
            Assert.That(answer, Is.EqualTo(42), "answer is not 42 so test failed");
        }
    }
}

Проблема в том, что в отчете об объеме отображается только результат из тестового класса 1. См. Скриншот ниже

enter image description here

Что я здесь не так делаю.Пожалуйста, помогите

1 Ответ

0 голосов
/ 25 июня 2019

Попробуйте написать свой метод OneTimeTearDown в классе AssemblySetup.

[SetUpFixture]
    public class AssemblySetup
    {
        [OneTimeSetUp]
        public static void Setup()
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de-AT");

        }


        [OneTimeTearDown]
        public void EndReport()
        {
              _extent.Flush();
         }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...