2017-02-17 2 views
0

Как я могу проверить, выполняется ли десериализация моего входа JSON? Я пытаюсь десериализовать вход JSON, вычислять, а затем сериализовать. Но я не знаю, как проверить, десериализирован ли мой ввод. Поэтому я пишу блок-тест для проверки.C# Unit Testing проверяет, выполняется ли десериализация ввода данных

ПРИМЕЧАНИЕ: AlphaCalcParam ParseParameter - частный метод. Здесь я получаю сообщение об ошибке.

Unit 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

Серьезно, не понимаю со всеми 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