2016-04-11 2 views
0

Ich habe vor kurzem ein sehr seltsames Verhalten, so komisch, dass ich mich frage, ob der Schuldige das Unit-Framework sein könnte, das ich benutze (XUnit). Ich habe dort eine Frage dazu gestellt: Can Expressmapper copy to destination? aber diesmal geht es nicht mehr um Expressmapper, sondern um XUnit.Kann XUnit den Code stören?

Wissen Sie, ob XUnit in irgendeiner Weise mit dem Code interferieren kann?

Hier ist eine der Grund, warum ich frage:

Ich kann diejenigen ‚zusammen oder einzeln) in beliebiger Reihenfolge ausgeführt werden und ich diese verrückte Verhalten immer erhalten:

  • Erster Test fehlschlägt (Test_xxx)
  • zweiten Testdurchlauf (Test_Map)

Beide Tests den gleichen Code enthalten !!

[Fact] 
    [Trait("Test kind", "Integration")] 
    public void Test_xxx() 
    { 
     // Arrange 
     var mapper = new MappingServiceProvider(); 
     mapper.Register<MapSource, MapDestination>(); 
     var src = new MapSource 
     { 
      Id = Guid.NewGuid().GetHashCode(), 
      Guid = Guid.NewGuid(), 
      Parent = new MapSource 
      { 
       Id = Guid.NewGuid().GetHashCode(), 
       Guid = Guid.NewGuid() 
      } 
     }; 
     src.Children = Enumerable.Range(0, 3).Select(i => new MapSource 
     { 
      Id = Guid.NewGuid().GetHashCode(), 
      Guid = Guid.NewGuid() 
     }).ToList(); 
     var dst = new MapDestination(); 

     // Act 
     mapper.Map(src, dst); 

     // Assert 
     var compare = new CompareLogic(new ComparisonConfig 
     { 
      IgnoreObjectTypes = true 
     }); 
     var comparison = compare.Compare(src, dst); 
     Assert.Equal(new List<Difference>(), comparison.Differences); 
    } 

    [Fact] 
    [Trait("Test kind", "Integration")] 
    public void Test_Map() 
    { 
     // Arrange 
     var mapper = new MappingServiceProvider(); 
     mapper.Register<MapSource, MapDestination>(); 
     var src = new MapSource 
     { 
      Id = Guid.NewGuid().GetHashCode(), 
      Guid = Guid.NewGuid(), 
      Parent = new MapSource 
      { 
       Id = Guid.NewGuid().GetHashCode(), 
       Guid = Guid.NewGuid() 
      } 
     }; 
     src.Children = Enumerable.Range(0, 3).Select(i => new MapSource 
     { 
      Id = Guid.NewGuid().GetHashCode(), 
      Guid = Guid.NewGuid() 
     }).ToList(); 
     var dst = new MapDestination(); 

     // Act 
     mapper.Map(src, dst); 

     // Assert 
     var compare = new CompareLogic(new ComparisonConfig 
     { 
      IgnoreObjectTypes = true 
     }); 
     var comparison = compare.Compare(src, dst); 
     Assert.Equal(new List<Difference>(), comparison.Differences); 
    } 

Antwort

0

Ich hatte eine andere Methode namens Test_Map (mit einer anderen Signatur; aka Überladung).

Ich denke, XUnit erfordert Methodenname eindeutig (etwas, was ich vorhatte).