Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 测试中的最佳实践是什么?_Unit Testing_Testing - Fatal编程技术网

Unit testing 测试中的最佳实践是什么?

Unit testing 测试中的最佳实践是什么?,unit-testing,testing,Unit Testing,Testing,我想知道当你测试你的课程时,你的做法是什么 例如,我喜欢在我的装置中使用继承。 给定两个类BaseClass,SubClass,我创建了另外两个类BaseClassFixture和SubClassFixture(SubClassFixture是BaseClassFixture的一个子类)。所以我确信我不会破坏使用子类作为基类的代码(扩展我的类的人可以通过创建我的fixture的另一个子类来确定他们是否做得对) 我也对接口进行夹具继承。 例如,当我为IList创建一个fixture时,我会检查任何

我想知道当你测试你的课程时,你的做法是什么

例如,我喜欢在我的装置中使用继承。 给定两个类BaseClass,SubClass,我创建了另外两个类BaseClassFixture和SubClassFixture(SubClassFixture是BaseClassFixture的一个子类)。所以我确信我不会破坏使用子类作为基类的代码(扩展我的类的人可以通过创建我的fixture的另一个子类来确定他们是否做得对)

我也对接口进行夹具继承。 例如,当我为IList创建一个fixture时,我会检查任何Add,将Count增加1。 当我有一个实现IList的具体类时,我只创建一个名为MyConcreteClassListFixture的装置

在这种情况下,我的接口的fixture是抽象的,我让我的子类为我的测试创建实例

我认为这是一种契约式设计(见Bertrand Meyer),因为我在任何测试之前和之后都会检查不变量

我特别是在发布接口或类时这样做


而你。。。你的做法是什么?

我最重要的规则是每个测试都应该是原子的,并且不应该以特定的顺序运行

对于单元测试,他们应该严格遵守关注点的分离。 对于集成测试,我特别注意确保它们遵循最重要的规则


此外,测试应尽可能遵循代码中的枯燥规则。

编写单元测试时有两件重要的事情

1) 单元测试应该是独立的:

单元测试必须是独立的。这意味着您的单元测试不应该依赖于外部事物来运行。这包括internet连接、外部web服务等

2) 单元测试应该是快速的:

单元测试应该运行得很快。您可以用多种方式编写单元测试。其中一些包括dataaccess,即使运行测试不需要访问数据。您可以始终使用模拟对象和模拟数据访问层

3) 良好的命名约定:

单元测试应该有良好的命名约定,读起来应该像故事一样

以下是一个例子:

当用户将钱从源帐户转移到目的帐户时的公共类

public void确保当来源帐户资金不足时抛出错误 {

}

下面是一个很好的屏幕广播,涵盖了上述许多要点:


这个问题似乎很普遍;投票否决。问一些更具体的问题怎么样?不仅太笼统了,基本上和两天前的问题一样: