C#单元测试验证数据输入是否正在反序列化

时间:2017-02-17 17:36:53

标签: c# json unit-testing serialization

如果我的JSON输入被反序列化,我如何进行单元测试?我试图反序列化JSON输入,计算然后序列化。但我不知道如何检查我的输入是否被反序列化。所以我正在编写单元测试来验证。

注意: 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 个答案:

答案 0 :(得分:1)

现在您的单元测试总是断言失败。您需要做的是测试res的预期值。

eventsTime

如果res不是预期值,则单元测试将失败。

查看所有可用测试方法的Assert Class文档。