2017-02-17 10 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

あなたのユニットテストは常に失敗にアサートされます。あなたがする必要があるのは、resの期待値をテストすることです。

[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

関連する問題