2017-02-17 59 views
0

如何測試我的JSON輸入是否正在反序列化?我試圖反序列化一個JSON輸入,計算然後序列化。但我不知道如何檢查我的輸入是否被反序列化。所以我正在編寫單元測試來驗證。C#單元測試驗證數據輸入是否正在反序列化

注意: AlphaCalcParam ParseParameter是一個私有方法。這是我收到錯誤的地方。

單元測試

[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(); 
      } 

邏輯

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

嚴重的是,不明白所有的downvotes。新的C#。試圖學習。幫助我改進。這就是我認爲stackoverflow的目的。 –

回答

1

你的單元測試,現在總是被斷言爲失敗。你需要做的是測試水庫的預期價值。

[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); 
     } 

如果res不是預期值,則單元測試將失敗。

查看所有可用的測試方法的Assert Class文檔。

+0

@dpimenete謝謝,但AlphaCalcParam是一種私有方法。 –

+0

那麼單元測試的邏輯就是你想要的。對於測試,您可能必須將AlphaCalcParam方法內部或公開,而不是私有。否則,可以使用新的訪問器函數。 – dpimente