我想知道在测试课程时你的做法是什么。
例如,我喜欢使用继承,使用我的灯具。 给定两个类BaseClass,SubClass,我创建另外两个类BaseClassFixture和SubClassFixture(SubClassFixture是BaseClassFixture的子类)。所以我确信我不会破坏使用SubClass作为BaseClass的代码(扩展我的类的人可以确定他们是否正确,通过创建我的fixture的另一个子类)。
我也使用接口进行夹具继承。 例如,当我为IList创建一个fixture时,我检查是否有任何Add,将Count增加一个。 当我有一个实现IList的具体类时,我只需创建一个名为MyConcreteClassIListFixture的夹具。
在这种情况下,我的界面的fixture是抽象的,我让我的子类为我的测试创建实例。
我认为这是契约的一种设计(见Bertrand Meyer),因为我在任何测试之前和之后检查不变量。
我特别使用已发布的接口或类来执行此操作。
而你......你的做法是什么?
答案 0 :(得分:1)
我最重要的规则是每个测试都应该是原子的,并且应该没有特定的顺序。
对于单元测试,他们应严格遵守关注点。 对于集成测试,我要特别注意确保它们遵循最重要的规则。
此外,测试应尽可能遵循DRY规则以及代码。
答案 1 :(得分:0)
编写单元测试时有几个重要的事情。
1)单元测试应该是独立的:
单元测试必须是独立的。这意味着您的单元测试不应该依赖于外部事物来运行。这包括互联网连接,外部网络服务等。
2)单元测试应该很快:
单元测试应该快速运行。您可以通过多种方式编写单元测试。其中一些包括dataaccess,即使您不需要访问数据来运行测试。您始终可以使用模拟对象并模拟数据访问层。
3)良好的命名惯例:
单元测试应该具有良好的命名约定,并且应该像故事一样阅读。
以下是一个例子:
public class when_user_transfer_money_from_source_account_to_destination_account
public void make_sure_error_is_thrown_when_source_account_has_insufficient_funds() {
}
这是一个很好的截屏视频,涵盖了以上几点:
http://screencastaday.com/ScreenCasts/32_Introduction_to_Mocking.aspx