web-dev-qa-db-fra.com

Test unitaire d'une bibliothèque .NET Standard 1.6

J'ai du mal à trouver une documentation à jour sur la façon de tester de façon unitaire une bibliothèque de classes .NET Standard 1.6 (qui peut être référencée à partir d'un projet .NET Core).

Voici ce que mon project.json ressemble à ma bibliothèque:

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0",
    "Portable.BouncyCastle": "1.8.1.2"
  },
  "frameworks": {
    "netstandard1.6": {}
  }
}

Maintenant, la tâche restante est de pouvoir créer une sorte de projet qui peut effectuer les tests unitaires. L'objectif est d'utiliser xUnit car il semble que c'est ce que l'équipe .NET Core pousse.

Je suis allé de l'avant et j'ai créé un autre projet de bibliothèque .NET Portable qui a un project.json qui ressemble à ceci:

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0",
    "xunit": "2.2.0-beta4-build3444",
    "xunit.runner.visualstudio": "2.1.0"
  },
  "frameworks": {
    "netstandard1.6": {

    }
  }
}

Ma classe de test dans ce projet ressemble à ceci:

using USB.EnterpriseAutomation.Security.DotNetCore;
using Xunit;

namespace Security.DotNetCore.Test
{
    public class AesEncryptionHelperTests
    {
        [Fact]
        public void AesEncryptDecrypt()
        {
            var input = "Hello world!";
            var encrypted = AesEncryptionHelper.AesEncrypt(input);
            var decrypted = AesEncryptionHelper.AesDecrypt(encrypted);

            Assert.Equal(input, decrypted);
        }
    }
}

Lorsque j'avance et que je crée ce projet, l'explorateur de tests ne voit aucun de mes tests.

Comment créer un test unitaire capable de tester cette bibliothèque?

16
blgrnboy

J'ai actuellement un projet de travail utilisant xunit 2.1.0 et dotnet-test-xunit 2.2.0-preview2-build1029.

C'est mon project.json pour le projet de test unitaire:

{
  "dependencies": {
    "dotnet-test-xunit": "2.2.0-preview2-build1029",
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0"
    },
    "MyProject.Library": {
      "target": "project",
    },
    "xunit": "2.1.0"
  },
  "description": "Unit tests",
  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dotnet"
    }
  },
  "testRunner": "xunit"
}

Cela fonctionne à la fois sur la ligne de commande (via dotnet test) et dans l'Explorateur de tests de Visual Studio 2015.

Je pense que dotnet-test-xunit est obsolète, mais je ne suis pas sûr. Tout ce qui précède changera probablement après la disparition de project.json, mais cela fonctionne aujourd'hui.

5
Nate Barbettini

J'ai trouvé le problème publié sur la page GitHub de xUnit ici: https://github.com/xunit/xunit/issues/1032

Comme l'explique Brad Wilson, les bibliothèques NETStandard doivent être testées avec une bibliothèque principale dotnet ou une bibliothèque .Net Framework complète.

Dans mon cas, j'ai fait de ma bibliothèque de tests unitaires une bibliothèque "de bureau classique" complète et Test Explorer a pu exécuter mes tests.

9
Brett Mathe