3 votes

NUnit.Engine.NUnitEngineUnloadException : Plusieurs exceptions rencontrées. Récupérez la propriété AggregatedExceptions pour plus d'informations.

Lorsque j'exécute mes tests sur le serveur de construction TeamCity, j'obtiens [subject] dans mon journal et l'étape échoue.

Le code est le résultat d'une inclusion assez large de code qui rend difficile de déterminer exactement ce que je fais mal (et je préfère ne pas revenir en arrière et recommencer par petites étapes).

Comment puis-je régler ce problème ? Comment puis-je identifier le problème ?

J'utilise - nunit nuget 3.10.1 (dernière version officielle au moment de l'écriture) - nunit.console 3.8.0 sur le serveur de construction avec x64/v4.0

En exécutant localement (via R#) sur ma machine de développement, je ne vois aucun problème.

Les tests sont basés sur des bases de données. Je crée une nouvelle base de données pour le test (cas) et je la supprime une fois le test terminé.

Toutes les suggestions sont les bienvenues !

BR - Anders

[14:31:35]Step 3/6: NUnit - non-selenium (NUnit) (1m:05s)
[14:32:41]Step 4/6: OctopusDeploy: Create release (8s)
[14:32:50]Step 5/6: OctopusDeploy: Deploy release CI (OctopusDeploy: Deploy release) (1m:02s)
[14:33:52]Step 6/6: NUnit - selenium (NUnit) (1m:24s)
[14:33:53][Step 6/6] Starting: C:\TeamCity\buildAgent\tools\JetBrains.dotCover.CommandLineTools.bundled\dotCover.exe cover C:\TeamCity\buildAgent\temp\buildTmp\eBhHYI0b3Hab7OnsiQarKgWFi56r6tlg.dotCover /ReturnTargetExitCode /NoCheckForUpdates
[14:33:53][Step 6/6] in directory: C:\TeamCity\buildAgent\work\f7928b43a423b8ff\Src\JCI.ITC.COMP2.Search.IntegrationTests
[14:33:53][Step 6/6] JetBrains dotCover Console Runner 2017.2.2. Build 109.0.20171006.131113
[14:33:53][Step 6/6] Copyright (c) 2009-2018 JetBrains s.r.o. All rights reserved.
[14:33:54][Step 6/6] [JetBrains dotCover] Coverage session started [08-08-2018 14:33:54]
[14:33:57][Step 6/6] Runtime Environment
[14:33:57][Step 6/6]    OS Version: Microsoft Windows NT 10.0.14393.0
[14:33:57][Step 6/6]   CLR Version: 4.0.30319.42000
[14:33:57][Step 6/6] 
[14:33:57][Step 6/6] Test Files
[14:33:57][Step 6/6]     C:\TeamCity\buildAgent\temp\buildTmp\eWgQASs1HMWflTd4lND2sWNURPc3yFDs.nunit
[14:33:57][Step 6/6] 
[14:33:57][Step 6/6] Test Filters
[14:33:57][Step 6/6]     Where: cat==Integration
[14:33:57][Step 6/6] 
[14:34:03][Step 6/6] JCI.ITC.COMP2.Search.IntegrationTests.dll (52s)
[14:35:12][Step 6/6] 
[14:35:12][Step 6/6] Tests Not Run
[14:35:12][Step 6/6] 
[14:35:12][Step 6/6] 1) Ignored : JCI.ITC.COMP2.Search.IntegrationTests.CoreSolver.Integration.IntegrationUsingHandlerDirectlyTest.ThatPostingValidCalculationIsSuccesful
[14:35:12][Step 6/6] Second wave
[14:35:12][Step 6/6] 
[14:35:12][Step 6/6] 2) Ignored : JCI.ITC.COMP2.Search.IntegrationTests.CoreSolver.Integration.SeleniumTests.ThatSwaggerPageCanBeDisplayedCorrectly
[14:35:12][Step 6/6] OneTimeSetUp: Waiting
[14:35:12][Step 6/6] 
[14:35:12][Step 6/6] Run Settings
[14:35:12][Step 6/6]     RuntimeFramework: net-4.0
[14:35:12][Step 6/6]     DisposeRunners: True
[14:35:12][Step 6/6]     WorkDirectory: C:\TeamCity\buildAgent\work\f7928b43a423b8ff\Src\JCI.ITC.COMP2.Search.IntegrationTests
[14:35:12][Step 6/6]     BasePath: C:\TeamCity\buildAgent\work\f7928b43a423b8ff\src\JCI.ITC.COMP2.Search.IntegrationTests\bin\Release
[14:35:12][Step 6/6]     ImageRuntimeVersion: 4.0.30319
[14:35:12][Step 6/6]     ImageTargetFrameworkName: .NETFramework,Version=v4.7.2
[14:35:12][Step 6/6]     ImageRequiresX86: False
[14:35:12][Step 6/6]     ImageRequiresDefaultAppDomainAssemblyResolver: False
[14:35:12][Step 6/6]     NumberOfTestWorkers: 2
[14:35:12][Step 6/6] 
[14:35:12][Step 6/6] Test Run Summary
[14:35:12][Step 6/6]   Overall result: Warning
[14:35:12][Step 6/6]   Test Count: 13, Passed: 11, Failed: 0, Warnings: 0, Inconclusive: 0, Skipped: 2
[14:35:12][Step 6/6]     Skipped Tests - Ignored: 2, Explicit: 0, Other: 0
[14:35:12][Step 6/6]   Start time: 2018-08-08 12:33:57Z
[14:35:12][Step 6/6]     End time: 2018-08-08 12:35:12Z
[14:35:12][Step 6/6]     Duration: 75.068 seconds
[14:35:12][Step 6/6] 
[14:35:12][Step 6/6] Results (nunit3) saved as C:\TeamCity\buildAgent\temp\buildTmp\eWgQASs1HMWflTd4lND2sWNURPc3yFDs.nunit.xml
[14:35:12][Step 6/6] 
[14:35:12][Step 6/6] NUnit.Engine.NUnitEngineUnloadException : Multiple exceptions encountered. Retrieve AggregatedExceptions property for more information
[14:35:12][Step 6/6]   ----> NUnit.Engine.NUnitEngineUnloadException : Agent Process was terminated successfully after error.
[14:35:12][Step 6/6]   ----> NUnit.Engine.NUnitEngineUnloadException : Exception encountered unloading application domain
[14:35:12][Step 6/6]   ----> NUnit.Engine.NUnitEngineException : Exception encountered unloading application domain: Error while unloading appdomain. (Exception from HRESULT: 0x80131015)
[14:35:12][Step 6/6] Application domain name: domain-ffefe317-eWgQASs1HMWflTd4lND2sWNURPc3yFDs.nunit
[14:35:12][Step 6/6] Application domain BaseDirectory: C:\TeamCity\buildAgent\work\f7928b43a423b8ff\src\JCI.ITC.COMP2.Search.IntegrationTests\bin\Release\
[14:35:12][Step 6/6] 
[14:35:16][Step 6/6] [JetBrains dotCover] Coverage session finished [08-08-2018 14:35:16]
[14:35:16][Step 6/6] [JetBrains dotCover] Analyzed application exited with code '-5'
[14:35:16][Step 6/6] [JetBrains dotCover] Coverage results post-processing started [08-08-2018 14:35:16]
[14:35:16][Step 6/6] [JetBrains dotCover] Coverage results post-processing finished [08-08-2018 14:35:16]

2voto

Anders Juul Points 659

Si cela peut aider quelqu'un À la fin, j'ai réussi à le faire fonctionner.

Il se peut que ce soit aussi les tests d'intégration de la base de données, mais la modification finale qui m'a permis de réussir est indiquée ci-dessous.

L'IContainer de StructureMap est IDisposable et apparemment le processus de test unitaire a conservé les binaires après avoir terminé le test, empêchant ainsi le déchargement.

Avant

[Test]
public void ThatControllersCanBeCreatedByIocContainer()
{
    // Arrange
    var sut = WebIoC.Initialize();

    // Act
    var searchRequestController = sut.GetInstance<SearchRequestController>();
    var searchStatusController = sut.GetInstance<SearchStatusController>();

    // Assert
    Assert.IsNotNull(searchRequestController);
    Assert.IsNotNull(searchStatusController);
}

Après

[Test]
public void ThatControllersCanBeCreatedByIocContainer()
{
    // Arrange
    using (var sut = WebIoC.Initialize())
    {
        // Act
        var searchRequestController = sut.GetInstance<SearchRequestController>();
        var searchStatusController = sut.GetInstance<SearchStatusController>();

        // Assert
        Assert.IsNotNull(searchRequestController);
        Assert.IsNotNull(searchStatusController);
    }
}

où WebIOC.Initialize() ressemble (trucs standards) :

public static class WebIoC 
{
    public static IContainer Initialize() 
    {
        return new Container(c =>
        {
            c.AddRegistry<WebRegistry>();
            c.AddRegistry<SharedRegistry>();

            c.Scan(scan =>
            {
                scan.TheCallingAssembly();

                scan.WithDefaultConventions();
            });
        });
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X