gpt4 book ai didi

c# - TestMethod 生成错误 CS0201

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:08 25 4
gpt4 key购买 nike

这可能是我需要摆脱我的系统的哲学咆哮,另一方面我可能做错了什么,如果是这样请告诉我!

我有一个单元测试看起来像这样:

[TestMethod]
[ExpectedException(typeof(NotImplementedException))]
public void Test_XXXAccess()
{
ControlPoint.MyObject.XXXAccess;
}

当测试在特定上下文中运行时,检查属性 XXXAccess 是否未实现。此测试生成编译错误 CS0201:“只有赋值、调用、递增、递减和新对象表达式可以用作语句” 虽然我同意这是生产代码中的错误,但我认为是错误地应用于单元测试。当然我可以将代码重写为:

[TestMethod]
[ExpectedException(typeof(NotImplementedException))]
public void Test_XXXAccess()
{
MyType x = ControlPoint.MyObject.XXXAccess;
}

但这(对我而言)似乎更不正确,因为您现在已将它分配给一个变量,除了消除错误之外什么都不做。

有没有更好的方法来编写测试?

最佳答案

如果你想检查那个类型没有那个名字的属性,测试应该在typeof(whatever)上使用反射;如果您想检查 getter/setter 方法 是否抛出 NotImplementedException,您需要实际调用该方法。

毕竟,您可能实现了 getter 而不是 setter;在这种情况下,您只想“提及”该属性(property)做什么?最好实际调用您感兴趣的代码并对发生的情况断言。

我想如果它是您感兴趣的 getter,您可以反射以获得 getter 方法,然后只需调用它(不需要声明本地的,然后你不使用),但这比你已经确定的解决方案要冗长得多。

关于c# - TestMethod 生成错误 CS0201,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11971059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com