2016-03-27 1 views
1

Suite à un article on strathweb, j'ai récemment ajouté quelques tests d'intégration à mon projet DNX. Localement, ceux-ci fonctionnent bien (yay pour les serveurs web de mémoire).Microsoft.AspNet.TestHost.TestServer requiert plus d'un Core/Processeur?

Cependant lors de l'exécution du tests on a VM with only a single core, les tests d'intégration suspendus indéfiniment (et éventuellement échouent parce appveyor construit sont plafonnés à 60 minutes.

Chose curieuse, lors de l'exécution du

tout tests on a VM with more than one core fonctionne très bien. La conclusion évidente est peut-être que Microsoft.AspNet.TestHost.TestServer a besoin de plus d'un Core (ou au moins plus d'un processeur logique) Quelqu'un at-il une expérience avec ceci pour pouvoir confirmer/refuser?

+1

FYI: Katana est le prédécesseur des applications DNX. Vous utilisez DNX/ASP.NET5, pas Katana. – Tratcher

+0

Le partage du code de test peut aider. – Tratcher

+0

Merci Tratcher - édité le poste pour supprimer Katana. Le code de test est [ici] (https://github.com/jamescrosswell/CommandRouting/blob/master/src/Sample.IntegrationTests/Commands/SayHelloTests.cs) - c'est un projet open source donc le code testé est également en ce repo. –

Répondre

2

A s @Tratcher a répondu comme commentaire: xUnit soutient async afin de rendre votre async test et tâche retour (autrement xUnit ne connaît pas le résultat de votre test et il passera même avant l'exécution terminée):

[Fact] 
     public async Task Get_hello_should_ignore_bob() 
     { 
      // Given a sample client 
      var client = SampleClient(); 

      // When I call POST /account/signin 
      var value = new StringContent(""); 
      var response = await client.PostAsync("/account/signin", value); 

      // Then the result should be Hello 
      string result = await response.Content.ReadAsStringAsync(); 
      result.Should().Be("\"Hello\""); 
     } 

maintenant que votre test est async, vous pouvez utiliser attendent, au lieu d'appeler .Result la tâche (qui est ce qui a causé votre problème):

, il est également intéressant de noter pourquoi cela est arrivé. See more about dead-lock and SynchronizationContext