【问题标题】:unit test cases for converters in wpf [closed]wpf中转换器的单元测试用例[关闭]
【发布时间】:2018-10-31 00:28:29
【问题描述】:

我在我的项目中定义了一个转换器。我想从为该转换器编写单元测试用例开始。

转换器的代码是:

   public class BirdEyeViewColumnWidthConverter : IValueConverter
    {
        public int BirdEyeModeWidth { get; set; }
        public int DefaultWidth { get; set; }

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null)
            {
                if ((bool) value)
                {
                    return BirdEyeModeWidth;
                }
            }
            return DefaultWidth;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

我该如何开始呢?

【问题讨论】:

    标签: c# wpf xaml converters


    【解决方案1】:

    昨天我尝试了类似的东西,但我有字典而不是对象,所以也许这会帮助你TestCaseSourceAttribute

    另外,当你实现参数时,检查返回类型是否与你期望的相同 - 例如。 Assert.IsInstanceOf(typeof(DateTime), obj.CreationTime);

    【讨论】:

    • 那么,这里我需要比较一下哪两个对象的返回类型?
    • 我的错,我误读了给出的例子。正如我从你给定的代码中看到的那样,你会将value 作为NOT null 对象传递,并且你想获得BirdEyeModeWidth 属性,所以你需要检查你的方法是否返回你给定的属性。你首先需要实例化存储这些属性的类类型的对象,然后可能是这样的Assert.IsInstanceOf(typeof(int),obj.BirdEyeModeWidth)
    【解决方案2】:

    我该如何开始呢?

    1. 将单元测试项目 (.NET Framework) 添加到您的解决方案中。 (新建项目->已安装->Visual C#->在 Visual Studio 中测试)。
    2. 从新创建的单元测试项目中添加对您的BirdEyeViewColumnWidthConverter 定义的项目的引用。项目->添加参考->项目->解决方案。
    3. 在生成的UnitTest1 类的TestMethod1() 中重命名并编写单元测试。

    在此方法中,您创建转换器类的实例,调用其Convert 方法并断言返回的值是您期望的值,例如

    [TestClass]
    public class BirdEyeViewColumnWidthConverterTests
    {
        [TestMethod]
        public void BirdEyeViewColumnWidthConverterTest()
        {
            const int BirdEyeModeWidth = 20;
            const int DefaultWidth = 10;
    
            BirdEyeViewColumnWidthConverter converter = new BirdEyeViewColumnWidthConverter()
            {
                BirdEyeModeWidth = BirdEyeModeWidth,
                DefaultWidth = DefaultWidth,
            };
    
            int convertedValue = (int)converter.Convert(true, typeof(int), null, CultureInfo.InvariantCulture);
            Assert.AreEqual(BirdEyeModeWidth, convertedValue);
    
            convertedValue = (int)converter.Convert(false, typeof(int), null, CultureInfo.InvariantCulture);
            Assert.AreEqual(DefaultWidth, convertedValue);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      相关资源
      最近更新 更多