allure-framework / allure-framework/allure-csharp

Argument null exception when decorating Setup fixtures or extending classes

Open
#325 2 comments 1 reaction 0 assignees View on GitHub
bug
Dominant language
C#
Stars
125
Forks
76
Avg merge
1d 2h
Merged PRs (30d)
18

Description

[//]: # (
. Note: for support questions, please use Stackoverflow or Gitter**.
. This repository's issues are reserved for feature requests and bug reports.
.
. In case of any problems with Allure Jenkins plugin** please use the following repository
. to create an issue: https://github.com/jenkinsci/allure-plugin/issues
.
. Make sure you have a clear name for your issue. The name should start with a capital
. letter and no dot is required in the end of the sentence. An example of good issue names:
.
. - The report is broken in IE11
. - Add an ability to disable default plugins
. - Support emoji in test descriptions
)

#### I'm submitting a ...
- [x] bug report
- [ ] feature request
- [ ] support request => Please do not submit support request here, see note at the top of this template.

#### What is the current behavior?
If the [AllureNunit] attribute is added to a [SetupFixture] or a [TestFixture] that only contains [OneTimeSetup] methods (for example a BaseTest class which is extended by all test calsses) then a ArgumentNullException is thrown at runtime
```System.ArgumentNullException : Value cannot be null. (Parameter 'key')
at System.ThrowHelper.ThrowArgumentNullException(String name)
at System.Collections.Concurrent.ConcurrentDictionary`2.TryGetValue(TKey key, TValue& value)
at System.Collections.Concurrent.ConcurrentDictionary`2.get_Item(TKey key)
at Allure.Net.Commons.Storage.AllureStorage.Get[T](String uuid)
at Allure.Net.Commons.AllureLifecycle.AddAttachment(String name, String type, Byte[] content, String fileExtension)
at NUnit.Allure.Core.AllureNUnitHelper.AddConsoleOutputAttachment()
at NUnit.Allure.Core.AllureNUnitHelper.StopTestCase()
at NUnit.Allure.Core.AllureNUnitAttribute.AfterTest(ITest test)
at NUnit.Framework.Internal.Commands.TestActionCommand.<>c__DisplayClass0_0.<.ctor>b__1(TestExecutionContext context)
at NUnit.Framework.Internal.Commands.BeforeAndAfterTestCommand.<>c__DisplayClass1_0.b__1()
at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)
```

#### If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem
Run Test1()
```
[SetUpFixture]
[AllureNUnit]
public class Setup
{

[OneTimeSetUp]
public void Setup1()
{
Console.Out.WriteLine("setup");
}
}

[TestFixture]
[AllureNUnit]
public class Test :Setup
{

[Test]
public void Test1()
{
Console.Out.WriteLine("Test1");
}
}
```
OR

```
[TestFixture]
[AllureNUnit]
public class Setup
{

[OneTimeSetUp]
public void Setup1()
{
Console.Out.WriteLine("setup");
}
}

[TestFixture]
[AllureNUnit]
public class Test :Setup
{

[Test]
public void Test1()
{
Console.Out.WriteLine("Test1");
}
}
```

#### What is the expected behavior?
Tests should work and Setup/Teardown methods should be logged accordingly in the report.
NUnit.Allure 1.2.1.1 handles this correctly logging a message.

#### What is the motivation / use case for changing the behavior?
Without the [AllureNunit] attribute added to setup classes they are not captured correctly in the report.
Check differences [here](https://imgur.com/a/34rPvEv)

#### Please tell us about your environment:

- Test framework: Nunit 3.13.3
- Allure adaptor: Allure.Nunit 2.9.4-preview.2
- Generate report using: Allure.Nunit 2.9.4-preview.2

#### Other information
This is related to #286
I suspect this has something to do with the deprecation of wrapIntoStep property or changes to wrapIntoStep method. Allure.Nunit 2.9.1-preview.5 does not have this problem

Contributor guide

Open the contributing guide

Research direction

Start by reproducing Test1() with the two SetupFixture/TestFixture examples and follow the stack trace through AllureNUnitHelper.StopTestCase() and AddConsoleOutputAttachment(). Compare the behavior with Allure.Nunit 1.2.1.1 and 2.9.1-preview.5; done means tests run without ArgumentNullException and setup/teardown methods are logged in the report.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.