---
title: NUnit configuration
description: Configuration for Allure NUnit | Change allure-results directory | Configure link patterns | Configure broken test detection
---

# Allure NUnit configuration

This page describes the configuration options that affect the behavior of [Allure NUnit](/docs/nunit/).

By default, Allure NUnit tries to read the `allureConfig.json` file in the same directory where the test assembly is located. To make sure the file is present there, edit the file properties in your IDE or manually in your `*.csproj` file and set the corresponding item's `CopyToOutputDirectory` to either `Always` or `PreserveNewest`. For example:

```xml
<Project Sdk="Microsoft.NET.Sdk">
    <!-- ... -->
    <ItemGroup>
        <None Update="specflow.json">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
    </ItemGroup>
</Project>
```

Alternatively, use the `ALLURE_CONFIG` environment variable to specify a relative or absolute path of the configuration file.

## allure.directory

Path to the directory where Allure NUnit will save the test results, see [How it works](/docs/how-it-works/). If the directory does not exist, it will be created. Defaults to `allure-results`.

Note that the path is treated as relative to the build output directory of the project. When building and running tests from an IDE, this is typically different from the solution folder. Multiple `../` elements may be needed if you want to put the test results into a directory in the solution folder.

```json
{
  "allure": {
    "directory": "../../../../../allure-results"
  }
}
```

## allure.links

List of patterns that can be used to construct full URLs from short identifiers.

Each pattern must be a string containing a placeholder surrounded by curly brackets, for example: `{issue}`. When processing a link, Allure NUnit selects the pattern whose placeholder matches the link type (as specified using the [`Link` or `[AllureLink]`](/docs/nunit-reference/#link) arguments). The placeholder is then replaced by the short identifier.

For example, with the configuration below, the link `BUG-123` of type `issue` will be translated to `https://issues.example.com/BUG-123`.

```json
{
  "allure": {
    "links": [
      "https://issues.example.com/{issue}",
      "https://tms.example.com/{tms}",
      "https://jira.example.com/browse/{jira}"
    ]
  }
}
```

## allure.failExceptions

A list of exception types which, when thrown from a [step](/docs/nunit-reference/#test-steps), should cause it to have the [Failed](/docs/test-statuses/#failed) status. In case of any other exception, the [Broken](/docs/test-statuses/#broken) status is assigned to the step.

Info:
Currently, the setting only affects the statuses of individual test steps. For the status of a test as a whole, see [Distinguish between test statuses](/docs/nunit/#distinguish-between-test-statuses).

The default list includes the `NUnit.Framework.Internal.NUnitException` and `NUnit.Framework.AssertionException` classes. The setting, if not empty, overrides the default list. When looking for matches, Allure NUnit uses not only the exception class's own full name but also all its interfaces and base classes.

With the example configuration below, a step will be considered failed if it throws `NUnit.Framework.AssertionException`, `MyNamespace.MyCustomException`, or anything that derives from them. At the same time, any other exception will make the step broken.

```json
{
  "allure": {
    "failExceptions": ["NUnit.Framework.AssertionException", "MyNamespace.MyCustomException"]
  }
}
```
