2017-02-17 3 views
0

Wie kann ich testen, ob meine JSON-Eingabe deserialisiert wird? Ich versuche eine JSON-Eingabe zu deserialisieren, zu berechnen und dann zu serialisieren. Aber ich kann nicht überprüfen, ob meine Eingabe deserialisiert wird. Also schreibe ich Komponententest um zu validieren.C# Unit Testing validiert, wenn die Dateneingabe deserialisiert wird

HINWEIS: AlphaCalcParam ParseParameter ist eine private Methode. Hier bekomme ich einen Fehler.

Einheit Test

[TestMethod()] 
      public void ParseParameterTest() 
      { 
       Algo.Alpha.AlphaCalculator calc = new Alpha.AlphaCalculator(); 

       string test_input = File.ReadAllText(@"..\..\..\case\Alpha Example Input.json"); 
       string expected = File.ReadAllText(@"..\..\..\case\Alpha Example DOutput.json"); 
       string res = calc.AlphaCalcParam(test_input); 

       res == expected 
       Assert.Fail(); 
      } 

Logic

public string Calculation(string json_param) 
     { 
      try 
      { 
       AlphaCalcParam param = ParseParameter(json_param); 
       AlphaCalcResults result = CalculateAlpha(param); 

       return JsonConvert.SerializeObject(result); 
      } 
      catch (Exception e) 
      { 
       return "Failed in Alpha Calculation!. " + e.Message; 
      } 
     } 

...some more code.. below is what i want to test... 

private AlphaCalcParam ParseParameter(string json_param) 
     { 
      try 
      { 
       return JsonConvert.DeserializeObject<AlphaCalcParam>(json_param); 
      } 
      catch (Exception ex) 
      { 
       throw new Exception("The input json string format is wrong for Alpha Calculation!. " + ex.Message); 
      } 
     } 
+1

Im Ernst, verstehe nicht mit allen Downvotes. Neu in C#. Versuche zu lernen. Hilf mir, mich zu verbessern. Das ist, was ich dachte Stackoverflow ist für. –

Antwort

1

jetzt Ihr Unit-Test behauptet immer zu einem Versagen. Was Sie tun müssen, ist den erwarteten Wert von res zu testen.

[TestMethod()] 
     public void ParseParameterTest() 
     { 
      Algo.Alpha.AlphaCalculator calc = new Alpha.AlphaCalculator(); 

      string test_input = File.ReadAllText(@"..\..\..\case\Alpha Example Input.json"); 
      string expected = File.ReadAllText(@"..\..\..\case\Alpha Example DOutput.json"); 
      string res = calc.AlphaCalcParam(test_input); 

      Assert.AreEqual(expected, res); 
     } 

Wenn res nicht der erwartete Wert ist, schlägt der Komponententest fehl.

Werfen Sie einen Blick auf die Assert Class Dokumentation für alle verfügbaren Testmethoden.

+0

@ dpimenete danke aber AlphaCalcParam ist eine private Methode. –

+0

Nun, die Logik der Komponententests ist, was Sie wollen. Zu Testzwecken müssen Sie die AlphaCalcParam-Methode möglicherweise intern oder öffentlich machen, nicht privat. Andernfalls könnte eine neue Accessor-Funktion verwendet werden. – dpimente