Skip to content

Commit 074c795

Browse files
author
David Leon
committed
AqualityTracking.ReqnrollNUnitPlugin addition
1 parent 9de58f5 commit 074c795

File tree

8 files changed

+209
-1
lines changed

8 files changed

+209
-1
lines changed

AqualityTracking.Integrations/AqualityTracking.Integrations.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{38B81A9B-FA2
99
EndProject
1010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AqualityTracking.SpecFlowPlugin", "src\AqualityTracking.SpecFlowPlugin\AqualityTracking.SpecFlowPlugin.csproj", "{80F5C607-A534-4629-9C5A-067522667610}"
1111
EndProject
12+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AqualityTracking.ReqnrollPlugin", "src\AqualityTracking.ReqnrollPlugin\AqualityTracking.ReqnrollPlugin.csproj", "{5F06C9AD-6994-4602-A7DB-7E618440253B}"
13+
EndProject
1214
Global
1315
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1416
Debug|Any CPU = Debug|Any CPU
@@ -23,13 +25,18 @@ Global
2325
{80F5C607-A534-4629-9C5A-067522667610}.Debug|Any CPU.Build.0 = Debug|Any CPU
2426
{80F5C607-A534-4629-9C5A-067522667610}.Release|Any CPU.ActiveCfg = Release|Any CPU
2527
{80F5C607-A534-4629-9C5A-067522667610}.Release|Any CPU.Build.0 = Release|Any CPU
28+
{5F06C9AD-6994-4602-A7DB-7E618440253B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
29+
{5F06C9AD-6994-4602-A7DB-7E618440253B}.Debug|Any CPU.Build.0 = Debug|Any CPU
30+
{5F06C9AD-6994-4602-A7DB-7E618440253B}.Release|Any CPU.ActiveCfg = Release|Any CPU
31+
{5F06C9AD-6994-4602-A7DB-7E618440253B}.Release|Any CPU.Build.0 = Release|Any CPU
2632
EndGlobalSection
2733
GlobalSection(SolutionProperties) = preSolution
2834
HideSolutionNode = FALSE
2935
EndGlobalSection
3036
GlobalSection(NestedProjects) = preSolution
3137
{0FE70831-5707-48AA-AD1E-8EC02E04C177} = {38B81A9B-FA2A-425C-BEB5-40E69E0005CE}
3238
{80F5C607-A534-4629-9C5A-067522667610} = {38B81A9B-FA2A-425C-BEB5-40E69E0005CE}
39+
{5F06C9AD-6994-4602-A7DB-7E618440253B} = {38B81A9B-FA2A-425C-BEB5-40E69E0005CE}
3340
EndGlobalSection
3441
GlobalSection(ExtensibilityGlobals) = postSolution
3542
SolutionGuid = {CC3B552A-F385-48E0-8496-DE13B78ECAED}

AqualityTracking.Integrations/src/AqualityTracking.Integrations.Core/AqualityTracking.Integrations.Core.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
77
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
8+
<Version>1.0.1</Version>
89
<Authors>aquality automation committers</Authors>
910
<Company>aquality automation</Company>
1011
<Description>Aquality Tracking integration core for .NET test frameworks.</Description>
@@ -34,7 +35,7 @@
3435
<ItemGroup>
3536
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.4" />
3637
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.4" />
37-
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
38+
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
3839
</ItemGroup>
3940

4041
</Project>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
<Version>1.0.0</Version>
6+
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
7+
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
8+
<Authors>aquality automation committers</Authors>
9+
<Company>aquality automation</Company>
10+
<Description>Aquality Tracking integration for Reqnroll.NUnit 2.4.1</Description>
11+
<PackageDescription>Aquality Tracking integration for Reqnroll.NUnit 2.4.1</PackageDescription>
12+
<RepositoryUrl>https://github.com/aquality-automation/aquality-tracking-integrations-dotnet</RepositoryUrl>
13+
<RepositoryType>git</RepositoryType>
14+
<PackageTags>aquality-tracking</PackageTags>
15+
<PackageLicenseExpression></PackageLicenseExpression>
16+
<PackageLicenseFile>LICENSE</PackageLicenseFile>
17+
<Copyright>Copyright 2020 Aquality Automation</Copyright>
18+
<IsPackable>true</IsPackable>
19+
</PropertyGroup>
20+
21+
<ItemGroup>
22+
<Content Include="Resources\aqualityTracking.Template.json">
23+
<Pack>True</Pack>
24+
</Content>
25+
</ItemGroup>
26+
27+
<ItemGroup>
28+
<None Include="..\..\..\LICENSE">
29+
<Pack>True</Pack>
30+
<PackagePath></PackagePath>
31+
</None>
32+
</ItemGroup>
33+
34+
<ItemGroup>
35+
<PackageReference Include="Reqnroll.NUnit" Version="2.4.1" />
36+
</ItemGroup>
37+
38+
<ItemGroup>
39+
<ProjectReference Include="..\AqualityTracking.Integrations.Core\AqualityTracking.Integrations.Core.csproj" />
40+
</ItemGroup>
41+
42+
</Project>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Microsoft Visual Studio Solution File, Format Version 12.00
2+
# Visual Studio Version 17
3+
VisualStudioVersion = 17.5.2.0
4+
MinimumVisualStudioVersion = 10.0.40219.1
5+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AqualityTracking.ReqnrollPlugin", "AqualityTracking.ReqnrollPlugin.csproj", "{239FB2C5-8921-22ED-E4B7-C64D7C800C68}"
6+
EndProject
7+
Global
8+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
9+
Debug|Any CPU = Debug|Any CPU
10+
Release|Any CPU = Release|Any CPU
11+
EndGlobalSection
12+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
13+
{239FB2C5-8921-22ED-E4B7-C64D7C800C68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
14+
{239FB2C5-8921-22ED-E4B7-C64D7C800C68}.Debug|Any CPU.Build.0 = Debug|Any CPU
15+
{239FB2C5-8921-22ED-E4B7-C64D7C800C68}.Release|Any CPU.ActiveCfg = Release|Any CPU
16+
{239FB2C5-8921-22ED-E4B7-C64D7C800C68}.Release|Any CPU.Build.0 = Release|Any CPU
17+
EndGlobalSection
18+
GlobalSection(SolutionProperties) = preSolution
19+
HideSolutionNode = FALSE
20+
EndGlobalSection
21+
GlobalSection(ExtensibilityGlobals) = postSolution
22+
SolutionGuid = {BEAE39F7-AEA9-4D8E-BD79-3971847C8D4F}
23+
EndGlobalSection
24+
EndGlobal
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using AqualityTracking.Integrations.Core;
2+
using Reqnroll;
3+
4+
namespace AqualityTracking.ReqnrollPlugin
5+
{
6+
7+
[Binding]
8+
public class AqualityTrackingBindings
9+
{
10+
private static readonly AqualityTrackingLifecycle lifecycle = AqualityTrackingLifecycle.Instance;
11+
12+
private readonly FeatureContext featureContext;
13+
private readonly ScenarioContext scenarioContext;
14+
15+
public AqualityTrackingBindings(FeatureContext featureContext, ScenarioContext scenarioContext)
16+
{
17+
this.featureContext = featureContext;
18+
this.scenarioContext = scenarioContext;
19+
}
20+
21+
[BeforeTestRun]
22+
public static void StartTestRun()
23+
{
24+
lifecycle.StartTestRun();
25+
}
26+
27+
[AfterTestRun]
28+
public static void FinishTestRun()
29+
{
30+
lifecycle.FinishTestRun();
31+
}
32+
33+
[BeforeScenario(Order = 0)]
34+
public void StartTestExecution()
35+
{
36+
var testName = $"{featureContext.FeatureInfo.Title}: {scenarioContext.ScenarioInfo.Title}";
37+
lifecycle.StartTestExecution(testName);
38+
}
39+
40+
[AfterScenario(Order = int.MaxValue)]
41+
public void FinishTestExecution()
42+
{
43+
var testCaseResult = new TestCaseResultParser(scenarioContext.ScenarioExecutionStatus, scenarioContext.TestError).Parse();
44+
lifecycle.FinishTestExecution(testCaseResult.FinalResultId, testCaseResult.FailReason);
45+
}
46+
}
47+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using Reqnroll.Plugins;
2+
using Reqnroll.UnitTestProvider;
3+
4+
[assembly: RuntimePlugin(typeof(AqualityTracking.ReqnrollPlugin.AqualityTrackingPlugin))]
5+
6+
namespace AqualityTracking.ReqnrollPlugin
7+
{
8+
public class AqualityTrackingPlugin : IRuntimePlugin
9+
{
10+
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters,
11+
UnitTestProviderConfiguration unitTestProviderConfiguration)
12+
{
13+
// Add Reqnroll customizations
14+
}
15+
}
16+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"enabled": true,
3+
"host": "{aquality_tracking_address}",
4+
"token": "{api_token}",
5+
"projectId": 0,
6+
"executor": "{name_of_executor}",
7+
"suiteName": "{name_of_test_suite}",
8+
"buildName": "{name_of_ci_build}",
9+
"environment": "{name_of_execution_environment}",
10+
"ciBuild": "{link_to_ci_build}",
11+
"debug": false
12+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
using AqualityTracking.Integrations.Core;
2+
using System;
3+
using Reqnroll;
4+
5+
namespace AqualityTracking.ReqnrollPlugin
6+
{
7+
internal class TestCaseResultParser
8+
{
9+
private readonly ScenarioExecutionStatus executionStatus;
10+
private readonly Exception testError;
11+
12+
internal TestCaseResultParser(ScenarioExecutionStatus executionStatus, Exception testError)
13+
{
14+
this.executionStatus = executionStatus;
15+
this.testError = testError;
16+
}
17+
18+
internal TestCaseResult Parse()
19+
{
20+
var testCaseResult = new TestCaseResult();
21+
22+
switch (executionStatus)
23+
{
24+
case ScenarioExecutionStatus.OK:
25+
testCaseResult.FinalResultId = FinalResultId.Passed;
26+
break;
27+
case ScenarioExecutionStatus.TestError:
28+
testCaseResult.FinalResultId = FinalResultId.Failed;
29+
testCaseResult.FailReason = $"Message:{Environment.NewLine}{testError.Message}{Environment.NewLine}{Environment.NewLine}" +
30+
$"Stack Trace:{Environment.NewLine}{testError.StackTrace}";
31+
break;
32+
case ScenarioExecutionStatus.BindingError:
33+
case ScenarioExecutionStatus.StepDefinitionPending:
34+
testCaseResult.FinalResultId = FinalResultId.Failed;
35+
testCaseResult.FailReason = testError?.Message;
36+
break;
37+
case ScenarioExecutionStatus.UndefinedStep:
38+
testCaseResult.FinalResultId = FinalResultId.Failed;
39+
testCaseResult.FailReason = "No matching step definition found for one or more steps.";
40+
break;
41+
case ScenarioExecutionStatus.Skipped:
42+
testCaseResult.FinalResultId = FinalResultId.Pending;
43+
testCaseResult.FailReason = "Test skipped.";
44+
break;
45+
default:
46+
testCaseResult.FinalResultId = FinalResultId.NotExecuted;
47+
break;
48+
}
49+
50+
return testCaseResult;
51+
}
52+
}
53+
54+
internal class TestCaseResult
55+
{
56+
internal FinalResultId FinalResultId { get; set; }
57+
internal string FailReason { get; set; }
58+
}
59+
}

0 commit comments

Comments
 (0)