Я работаю над проектом .NetCore App 2.1 и создал несколько сценариев селена в C # для этого проекта с помощью инфраструктуры NUnit (в MacOS).Я могу выполнить это успешно.Однако я не могу сгенерировать отчет с использованием Extent Report 3.1.3 (также, Tried 2.41.x), так как получаю предупреждение, что он был восстановлен с помощью .NETFramework 4.6.1, но не с приложением .NetCore с Project Target.рамки, пока компилин.Когда я это исполняю, это бросало мне много исключений.Я решил один за другим, добавив пакеты Nuget.Наконец, я нахожусь в следующем исключении, из которого я не могу двигаться дальше.
TearDown failed for test fixture RBAutomationDemo.UnitTest1
TearDown : System.TypeLoadException : Could not load type 'System.Security.Principal.WindowsImpersonationContext' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
--TearDown
at RazorEngine.Compilation.DirectCompilerServiceBase.CompileType_Windows(TypeContext context)
at RazorEngine.Templating.RazorEngineCore.CreateTemplateType(ITemplateSource
razorTemplate, Type modelType)
at RazorEngine.Templating.RazorEngineCore.Compile(ITemplateKey key, Type modelType)
at RazorEngine.Templating.RazorEngineService.CompileAndCacheInternal(ITemplateKey key, Type modelType)
at RazorEngine.Templating.RazorEngineService.GetCompiledTemplate(ITemplateKey key, Type modelType, Boolean compileOnCacheMiss)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at AventStack.ExtentReports.Reporter.ExtentHtmlReporter.Flush()
at AventStack.ExtentReports.Model.Report.<>c.<NotifyReporters>b__29_1(IExtentReporter x)
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at AventStack.ExtentReports.Model.Report.NotifyReporters()
at AventStack.ExtentReports.Model.Report.Flush()
at AventStack.ExtentReports.ExtentReports.Flush()
at RBAutomationDemo.UnitTest1.OneTimeTearDown()`
Пожалуйста, помогите мне в этом.
- Возможно ли использовать отчеты об объемах в .NetCore 2.1 (в MacOS)?если так, пожалуйста, предоставьте мне шаги для достижения этого.
- Если отчеты по экстентам несовместимы с приложением 2.1 .NetCore, пожалуйста, предложите лучший инструмент отчетности в качестве альтернативы (предпочтительно с открытым исходным кодом)
- Я собираюсь напечатать его в VSTS.Будут ли действительно необходимы отчеты для этого сценария отдельно?
Код, который я использовал:
using System;
using AventStack.ExtentReports;
using AventStack.ExtentReports.Reporter;
using LocatorsFile;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
namespace RBAutomationDemo
{
[SetUpFixture]
public abstract class Base
{
protected ExtentReports _extent;
protected new ExtentTest _test;
[OneTimeSetUp]
protected void ReportSetup()
{
var dir = TestContext.CurrentContext.TestDirectory + "\\";
var fileName = this.GetType().ToString() + ".html";
System.Console.WriteLine(fileName);
ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter(dir + fileName);
_extent = new ExtentReports();
_extent.AttachReporter(htmlReporter);
}
[OneTimeTearDown]
protected void ReportTearDown()
{
_extent.Flush();
}
[SetUp]
public void BeforeTest()
{
_test = _extent.CreateTest(TestContext.CurrentContext.Test.Name);
Initialize();
}
[Test]
public void Testmethod1()
{
_test = extent.CreateTest("Checking Total workbooks count");
try
{
_test.Pass("Assertion passed");
_test.Log(Status.Pass, "Pass");
}
catch
{
_test.Fail("Assertion failed");
_test.Log(Status.Fail, "Fail");
throw;
}
}
[TearDown]
public void AfterTest()
{
var status = TestContext.CurrentContext.Result.Outcome.Status;
var stacktrace = string.IsNullOrEmpty(TestContext.CurrentContext.Result.StackTrace)
? ""
: string.Format("{0}", TestContext.CurrentContext.Result.StackTrace);
Status logstatus;
switch (status)
{
case TestStatus.Failed:
logstatus = Status.Fail;
break;
case TestStatus.Inconclusive:
logstatus = Status.Warning;
break;
case TestStatus.Skipped:
logstatus = Status.Skip;
break;
default:
logstatus = Status.Pass;
break;
}
_test.Log(logstatus, "Test ended with " + logstatus + stacktrace);
_extent.Flush();
DoTearDown();
}
}
}