C# XUnit单元测试中如何为CanConvert函数正确传递日期参数
问题解决方法
你的问题核心是参数类型不匹配:CanConvert方法要求传入Type类型参数,但你传递了System.DateTime的实例。无需修改原函数,按以下方式调整测试代码即可:
正确的测试代码
public void TestCanConvertForDateTime() { // 实例化你的转换器类(替换成实际的转换器类名,比如MyDateTimeConverter) var converter = new MyDateTimeConverter(); // 传入DateTime的类型对象,而非实例 bool result = converter.CanConvert(typeof(System.DateTime)); // XUnit断言验证结果符合预期 Assert.True(result); }
可选的补充测试场景
为了覆盖更多情况,还可以测试非DateTime类型的输入:
public void TestCanConvertForNonDateTime() { var converter = new MyDateTimeConverter(); // 传入字符串类型,验证返回false bool result = converter.CanConvert(typeof(string)); Assert.False(result); }
关键说明
typeof(System.DateTime)会返回System.DateTime对应的Type对象,完全匹配CanConvert的参数要求。- 由于
CanConvert是实例方法(带有override关键字),必须先实例化你的转换器类,再调用该实例的方法。
内容的提问来源于stack exchange,提问作者Gamer X.
相关产品推荐
相关产品推荐

