2017-06-01 1 views
0

J'ai un test d'intégration utilisant XUnit qui accède à la base de données. Nous devons être en mesure d'obtenir la chaîne de connexion à la base de données à partir du fichier app.config.Cake Build Script: Erreur lors de l'exécution des tests d'intégration XUnit - Impossible d'obtenir ConfigurationManager.ConnectionStrings ["FlexConnString"]

Lors de l'exécution du test à partir de l'IDE, il fonctionne parfaitement et la chaîne de connexion est trouvée. Quand je lance automatiquement le test d'un cake.build les ConfigurationManager.ConnectionStrings [ "blahblah"] ret

var connectionStringSettings = ConfigurationManager.ConnectionStrings["FlexConnString"]; 
if (connectionStringSettings == null) 
    { 
     Console.WriteLine("ConfigManager does not return a setting for FlexConnString"); 
     _connectionString = "No Connection string"; 
    } 

Le groupe de gâteau est

Task("Run-Integration-Tests") 
.IsDependentOn("Run-Unit-Tests") 
.Does(() => 
{ 
    var testDir = "./artifacts/_tests/**/*.IntegrationTests.dll"; 
    Information("Start Running Integration Tests in " + testDir); 
    XUnit2(testDir, 
     new XUnit2Settings { 
      Parallelism = ParallelismOption.All, 
      HtmlReport = true, 
      NoAppDomain = true, 
      NUnitReport = true, 
      XmlReport = true, 
      ReportName = "MixTdiIntegrationTestResults", 
      OutputDirectory = "./artifacts" 
     }); 
}); 

Ce sorties ConfigManager ne retourne pas un paramètre pour FlexConnString 'lors de l'exécution du build.cake de powershell.

Je ne sais pas si c'est un problème XUnit ou un problème de gâteau.

+0

Si vous lancez un gâteau avec une verbosité diagnostique, vous obtiendrez plus de journalisation et la ligne de commande utilisée pour lancer xunit. Vous pouvez en savoir plus sur dans la question ci-dessous https://stackoverflow.com/questions/38658660/how-to-enable-diagnostic-verbosity-for-cake – devlead

Répondre

1

lorsque vous exécutez test de xUnit il recherche le fichier de configuration dans le répertoire de travail actuel, vous pouvez facilement vérifier

Information("Current Directory: {0}", System.IO.Directory.GetCurrentDirectory()); 

et ne peut pas le trouver, vous devez spécifier WorkingDirectory dans le XUnit2Settings au dossier avec le fichier de configuration de chaîne de connexion

XUnit2(testDir, 
    new XUnit2Settings { 
     Parallelism = ParallelismOption.All, 
     HtmlReport = true, 
     NoAppDomain = true, 
     NUnitReport = true, 
     XmlReport = true, 
     ReportName = "MixTdiIntegrationTestResults", 
     OutputDirectory = "./artifacts", 
     WorkingDirectory = "[your config file path]" 
    }); 

besoin de mentionner une autre option est de changer votre répertoire de travail courant

Environment.CurrentDirectory = "c:/";