TDD在协作开源项目中是否可行


11

假设我想启动一个开源项目,希望/期望有很多人提交补丁,什么也没做。采取严格的TDD方法是否可行?我可以/应该/希望协作者在提交补丁时编写质量测试吗?

我一直在考虑的一件事是为单个错误报告和功能请求编写测试套件,并要求所有修补程序/拉动请求都使测试通过,但是到那时看来,编写功能/错误修复似乎会更好我。

据我所知,大多数使用TDD(或至少编写测试)的主要开放源代码项目似乎大多是纯粹由个人或团队编写的,在其中很容易实施TDD等实践。


分享您的研究成果对所有人都有帮助。告诉我们您尝试过的内容以及为什么它不能满足您的需求。这表明您已花时间尝试自我帮助,这使我们免于重复显而易见的答案,并且最重要的是,它可以帮助您获得更具体和相关的答案。另请参见“ 如何提问”
2013年

@gnat我已经搜索了StackExchange,并且有人问了一些带有单元测试的开源项目示例的问题,这与我的问题不同。根据您的要求,我添加了更多信息。
DormoTheNord 2013年

1
我相信@gnat是指具体的,引用的示例。
haneefmubarak

“最好自己编写功能/错误修正。” 有无测试?您是TDD的拥护者还是只是检查在这种情况下是否可行?
JeffO

当然,您可以/应该期望合作者在提交补丁时写出质量测试。这不仅有益- 在当今的大型开源项目中非常普遍(如果您愿意,我可以举一些例子)。
本杰明·格林鲍姆

Answers:


29

您实际上不能在可以由公众提交补丁的开源项目上强制执行TDD(先测试)方法。

可以强制执行的是,所有修补程序必须针对修补程序中包含的修补程序具有一组测试用例,并且这些测试用例以及所有现有的测试用例都必须通过。您可以通过仅向少数已知使用并同意项目策略的受信任开发人员授予提交权限,并公开声明仅在通过测试用例的情况下合并提交/拉动请求,来实施此操作。足够的覆盖范围)。

这不能保证首先编写测试,但是可以确保正确编写测试。


1
当然,存储库所有者可以拒绝进行任何不符合项目质量标准的更改吗?如果贡献者不喜欢它,那么贡献的质量和数量可能会受到影响,但这并不是说您不能执行它。一定?
汤姆W

2
@TomW:您将如何检查我的提交是根据TDD惯例创建的,而不是例如,在实现完成后编写的测试中,是否?
巴特·范·英根·谢瑙

啊,我明白你的意思了。我认为有些严谨性是不可避免的,但是您仍然可以验证代码是否随测试一起提供,测试是否足够细化以及是否覆盖了应有的一切。我对git不太熟悉,但是对于给定的请求,是否可以检查该变更集的提交顺序,以确保开发人员遵循了适当的过程来进行生产?
汤姆W

换句话说,您无法确认自己的内部流程,但是可以确保其输出符合特定标准。需要测试,并确保设计合理,这在所有者的权限之内。
阿德里安·施耐德

1

您可以要求人们提交仅测试补丁,然后才允许他们使用代码。这将为编写代码本身之前提供额外的机会来审查计划的设计。

在实践中,这可能会扼杀人们为该项目做出贡献的任何热情,或者可能激怒那些同意您的方法的人。

但是,审阅者必须非常擅长快速进行设计审阅,以免阻碍开发。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.