我应该在编译之前编写测试吗?

Ear*_*rlz 5 c# tdd nunit unit-testing api-design

我一直在尝试为我的一个开源项目遵循松散的TDD工作流程.它是其他程序员使用的API.

因此,一个关键方面以及使API"工作"也在设计它将如何被消费.我听说有些人说在编译之前编写测试是浪费时间,并且在API稳定之前容易不断重写.我也听说它应该遵循这样的工作流程:

  1. 编写无法编译的测试
  2. 让它编译
  3. 让它变绿

我一直在努力遵循这个工作流程,但我最终得到了一些奇怪的东西.例如,在我的API中,我有以下两种方法:

Handles(string pattern); //had this one already
Handles(IPatternMatcher pattern); //needed this one
Run Code Online (Sandbox Code Playgroud)

我需要将第二种形式的方法添加到我的API中.所以,我最终得到了一个死的简单测试:

public void Handles_SupportsIPatternMatcher()
{
  var api=new MyAPI();
  api.Handles(new TestPatternMatcher());
}
Run Code Online (Sandbox Code Playgroud)

它实施后似乎是一种浪费.

我应该继续关注此工作流程,还是有办法改进它?如何编写基本上只检查编译器错误的测试?由于它是一个可公开使用的API,我应该担心这样的测试吗?

Mar*_*ris 1

如果您使用 resharper,您可以创建空的 Handles 方法,该方法将获取 IPatternMatcher。TDD 是很强大的东西,你应该继续尝试。我尝试了代码前测试和代码后测试两种方法,我发现代码前测试是非常强大的。您可以非常快速地调试代码错误。测试可以保证您的代码将按您的预期工作。