2008-10-14 67 views
-1

我想知道您在测试课程时的做法。测试中的最佳做法是什么?

例如,我喜欢使用继承,与我的灯具。 给定两个类BaseClass,SubClass,我做了两个其他的类BaseClassFixture和SubClassFixture(SubClassFixture是BaseClassFixture的一个子类)。所以我确信我不会破坏使用SubClass作为BaseClass的代码(并且通过创建我的fixture的另一个子类,扩展我的类的人可以确定他们是否正确地做了事情。

我也使用接口进行夹具继承。 例如,当我为IList创建夹具时,我检查是否有任何添加,将计数增加1。 当我有一个实现IList的具体类时,我只需创建一个名为MyConcreteClassIListFixture的夹具。

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

我认为这是一种合同设计(参见Bertrand Meyer),因为我在任何测试之前和之后检查不变量。

我这样做尤其是发布的接口或类。

而你......你有什么做法?

+0

这个问题似乎一般;投票下来。怎么回答一些更具体的问题? – 2008-10-14 19:18:07

回答

0

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

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

单元测试必须是独立的。这意味着你的单元测试不应该依赖外部的东西来运行。这包括互联网连接,外部Web服务等

2)单元测试应该是快:

单元测试应该跑得快。你可以用多种方式编写单元测试。即使您不需要访问数据来运行测试,它们中的一些还包括数据访问。您始终可以使用模拟对象并模拟数据访问层。

3)良好的命名约定:

单元测试应该有良好的命名惯例,应阅读喜欢听故事。

这里是一个例子:

公共类when_user_transfer_money_from_source_account_to_destination_account

公共无效make_sure_error_is_thrown_when_source_account_has_insufficient_funds() {

}

这里是一个很好的截屏,其覆盖上述许多的点:

http://screencastaday.com/ScreenCasts/32_Introduction_to_Mocking.aspx

1

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

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

此外,测试应尽可能遵循DRY规则以及代码。

相关问题