如何进行单元测试?

Jor*_*oba 7 testing unit-testing

基本上我有两个主要问题:

  • 你究竟要测试什么?
  • 你怎么做呢?

问题是我有几个依赖于数据库连接和/或通信应用程序的应用程序,这意味着大多数测试用例都是集成测试(或者我认为).

大多数类本身都相当简单,但实现通信协议的类,对于自动化测试很有用,似乎很适合"单元测试"模型.

另一个例子.我开发了I管道结构,支持消费者/生产者模式的多线程支持.当一个线程读取管道并发现它为空时,它会阻塞,直到一个写入器写入管道.我应该使用单元测试来测试该类吗?

你如何决定单元测试?

编辑:我的意思是为自动化单元测试编写单元测试.

Vin*_*nie 4

您对代码单元进行单元测试。真正的问题是单位到底由什么组成?

在面向对象的环境中,一个单元就是一个类。类是因为对象的行为随对象的状态而变化,因此单独测试方法不会产生最完整的结果。

首先,您需要确定类的不变量。也就是说,对于该类的所有实例来说始终是正确的。例如,在 Fraction 类中,不变量可能是分母 != 0。

接下来,您需要识别每个方法的契约,即方法的前置条件和后置条件。

然后,您为可能出现的每种情况编写测试。因此,对于单个类,您最终可能会使用许多测试方法来测试每个方法可能遇到的各种条件。在每次测试中,您都要确保类的不变量成立并且方法的契约永远不会被破坏。

在某些情况下,例如您提供的示例,可能需要在环境中创建其他对象才能测试类的条件。在这些情况下,您可以使用模拟对象。