0

假设我编写了一个私有方法,它有一个字符串作为参数并返回一个字符串。

private string SomeMethod(string a)
{ ... }

写完之后,我想确保这个方法正常工作,并输入一个示例字符串来查看返回值是什么。现在我通过以下方式对其进行测试。我要么:

  • 注释掉我在 main() 函数中的所有内容并只调用方法 SomeMethod() 或
  • 我在代码中调用它应该调用的方法,在该位置设置断点并调试以查看返回值是否正确。

我不喜欢这两种方法。在开发代码时有没有更好的方法来简单地检查和测试方法?我不能(不应该)为此方法编写单元测试,因为它是私有的。

4

3 回答 3

1

如果您只想在创建后对其进行一次测试,我建议您使用一个简单的控制台应用程序打开您的开发环境(例如 Visual Studio)的另一个实例,您可以在其中复制粘贴该功能并在那里进行测试。

如果您希望定期对其进行测试以确保以后的更改不会出错,那么我担心单元测试正是您所需要的。您可以使用预编译器标志来禁用私有范围以进行测试:

#define TESTING
(...)
#if TESTING
        public void foo()
#else
        private void foo()
#endif
于 2013-08-13T11:28:59.633 回答
0

将逻辑放在一个公共方法中,您可以在开发时对其进行单元测试。当您对逻辑正确感到满意时,您可以将逻辑复制并粘贴到您的私有方法中。

于 2013-08-13T10:55:48.587 回答
0

这是滑铁卢大学所有一年级课程的学术方法,我想在现实世界中也会采用类似的方法(我的第一个合作社是 2014 年,所以我还不知道)。我觉得它非常有用,但需要一些时间。

如果您创建一个类(以下称为模块),那么您需要为每个类创建一个关联驱动程序模块。该驱动程序文件将包含您的所有测试:测试边缘情况和预期输入,以确保您的模块中的函数按预期运行。每个驱动程序模块都有一个main方法,并且为了您的测试,您需要将函数的范围从更改privatepublic(或在构造函数中调用它们)。

请记住,我们使用 C 进行编程,并且驱动程序模块在不改变范围的情况下更容易制作(偶尔static用于模块化范围)。

于 2013-08-13T10:47:23.637 回答