2016-03-24 9 views
0

Ich versuche, 2 Objekte mit Microsoft.TestApi zu vergleichen. Das Problem ist, dass es Unterschiede zwischen Enum-Werten nicht aufnimmt.Microsoft.TestApi Object Comparison erkennt keine Enum-Unterschiede

Im folgenden Beispiel würde ich erwarten, dass der Test bestanden wird, da die Enum-Werte unterschiedlich sind, der TestApi-Vergleich gibt jedoch keine Fehlpaarungen zurück.

Wie kann ich Enum-Wert-Unterschiede erkennen?

-Code

public class ObjectComparer 
{ 
    public bool AreDifferent(Holiday h1, Holiday h2) 
    { 
     var comparer = new ObjectGraphComparer(); 

     var factory = new PublicPropertyObjectGraphFactory(); 
     var sourceGraph = factory.CreateObjectGraph(h1); 
     var targetGraph = factory.CreateObjectGraph(h2); 

     IEnumerable<ObjectComparisonMismatch> result; 
     comparer.Compare(sourceGraph, targetGraph, out result); 

     return result.Any(); 
    } 
} 

public class Holiday 
{ 
    public Day Day { get; set; } 
} 

public enum Day 
{ 
    Monday, 
    Tuesday, 
    Wednesday, 
    Thursday, 
    Friday 
} 

-Test

[TestMethod] 
public void ShouldDetectDifferentEnumValues() 
{ 
    var h1 = new Holiday {Day = Day.Monday}; 
    var h2 = new Holiday {Day = Day.Tuesday}; 
    var comparer = new ObjectComparer(); 

    var result = comparer.AreDifferent(h1, h2); 

    Assert.IsTrue(result); 
} 
+0

Haben Sie den Quellcode von 'Microsoft.TestApi' geprüft' zu sehen, ob 'ObjectGraphComparer.compare() bei Aufzählungstypen aussieht? – Brad

Antwort

1

ich Ihren Code und machte eine kleine Forschung im Quellcode repliziert wurden. Mein Freund, Sie haben kein Glück, Enums werden nicht verglichen.

Der Code kann auf codeplex, der relevante Teil zu finden ist diese

// compare primitives, strings, datatimes, guids 
if (leftNode.ObjectType.IsPrimitive || 
      leftNode.ObjectType == typeof(string) || 
      leftNode.ObjectType == typeof(DateTime) || 
      leftNode.ObjectType == typeof(Guid)) 
+0

Danke, ich werde stattdessen die Bibliothek "compare-net-objects" verwenden. https://github.com/GregFinzer/Compare-Net-Objects – ChaoticNadirs