C# 为在C中不返回任何值的方法创建单元测试用例#

C# 为在C中不返回任何值的方法创建单元测试用例#,c#,C#,可能重复: 我需要为不返回任何值的GUI方法编写单元测试用例,如何测试ac您可以模拟方法调用的某些方法和类,并断言它们被调用。您可以为此使用一些模拟框架,其中大多数框架都有要测试的功能:Assert.IsCalled() 您还可以断言环境中预期的某些更改已得到满足。例如,创建了一个文件。您可以模拟方法调用的某些方法和类,并断言它们已被调用。您可以为此使用一些模拟框架,其中大多数框架都有要测试的功能:Assert.IsCalled() 您还可以断言环境中预期的某些更改已得到满足。例如,创建了一个

可能重复:


我需要为不返回任何值的GUI方法编写单元测试用例,如何测试ac

您可以模拟方法调用的某些方法和类,并断言它们被调用。您可以为此使用一些模拟框架,其中大多数框架都有要测试的功能:Assert.IsCalled()


您还可以断言环境中预期的某些更改已得到满足。例如,创建了一个文件。

您可以模拟方法调用的某些方法和类,并断言它们已被调用。您可以为此使用一些模拟框架,其中大多数框架都有要测试的功能:Assert.IsCalled()


您还可以断言环境中预期的某些更改已得到满足。例如,创建了一个文件。

如果它在传递正确的参数值(如果有)时未引发异常,则它将传递。如果它在传递无效值时抛出正确的excpeptions,则它通过。

如果它在传递参数的正确值(如果有)时未抛出异常,则它通过。如果它在传递无效值时抛出正确的expeptions,那么它就会通过。

您可以确保它不会抛出,至少通过

Assert.DoesNotThrow<ExceptionType>( () => myClass.myMethod() );
Assert.DoesNotThrow(()=>myClass.myMethod());

但是,请记住,不返回值但执行某些操作的方法依赖于副作用,因此不适合进行单元测试,因为您无法在单元测试中测试系统的整个状态。

您可以确保它不会抛出,至少通过

Assert.DoesNotThrow<ExceptionType>( () => myClass.myMethod() );
Assert.DoesNotThrow(()=>myClass.myMethod());

但是,请记住,不返回值但执行某些操作的方法依赖于副作用,因此不适合进行单元测试,因为您无法在单元测试中测试系统的整个状态。

如果该方法不返回任何内容,您到底在测试什么?副作用?它是否抛出/不抛出异常?如果该方法不返回任何内容,您到底在测试什么?副作用?它抛出/不抛出异常?如果一个测试抛出异常,那么它不会通过,为什么要测试它不抛出异常,除非你想将它缩小到一个特定的异常类型?主要是为了让它更明确地表明你在测试什么。单元测试的一个功能是确保代码符合您的要求。另一个功能是传达方法的作用以及如何调用它。测试应该能让你感觉到你期望发生什么,使用像DoesNotThrow这样的特定测试可以让函数的意义更加明确。你期望它通过的测试是隐含的,如果你必须在这方面明确,那么你是在试图向低能儿传达信息。实际上,大多数情况下,当我几个月后回到代码中时,我试图与自己沟通。如果那是因为我是个低能儿,那就这样吧。除了测试方法的正确性外,单元测试还提供了一个代码应如何使用的示例。如果测试引发异常,那么它不会通过,为什么要测试它是否不会引发异常,除非您希望将其缩小到特定的异常类型?主要是为了让它更明确地显示您的测试目的。单元测试的一个功能是确保代码符合您的要求。另一个功能是传达方法的作用以及如何调用它。测试应该能让你感觉到你期望发生什么,使用像DoesNotThrow这样的特定测试可以让函数的意义更加明确。你期望它通过的测试是隐含的,如果你必须在这方面明确,那么你是在试图向低能儿传达信息。实际上,大多数情况下,当我几个月后回到代码中时,我试图与自己沟通。如果那是因为我是个低能儿,那就这样吧。除了测试方法的正确性外,单元测试还提供了代码应该如何使用的示例。