首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事后单元测试

事后单元测试
EN

Stack Overflow用户
提问于 2011-12-19 23:31:20
回答 4查看 355关注 0票数 11

我用Git做版本控制,用QUnit做单元测试。有时我发现我的软件中有一个以前的版本中没有的bug。对我来说,专门为这个bug编写单元测试是很容易的。

有了那个单元测试,我可以很容易地检查我过去的所有提交,并用那个单元测试来测试构建,这样我就可以确定是哪个提交导致了破坏吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-19 23:34:18

请参考this page,使用git bisect

由于您正在测试JavaScript,因此您可能必须手动运行测试,并适当地运行git bisect goodgit bisect bad。但是,如果您可以从命令行运行您的单元测试,那么您可以使用git bisect run让Git重复执行测试并自动跟踪错误提交:

代码语言:javascript
复制
$ git bisect run my-script.sh

这是纯粹的魔法,你第一次看到它!:-)

票数 10
EN

Stack Overflow用户

发布于 2011-12-19 23:33:40

你描述了git bisect的工作。Git Book有a good tutorial

在你的问题中也有一些混淆:当一个测试被用来防止以前修复的错误的重新引入或buggy提交的一分为二时,它被称为回归测试,而不是单元测试。后一个测试纯粹是测试给定的小代码单元是否正常工作,并且受到大量的时间限制(TDD人员一天内运行几十次单元测试)。对于大型项目,您通常有比单元测试长得多的回归测试,因此您可能希望清理类别。

票数 11
EN

Stack Overflow用户

发布于 2011-12-19 23:36:04

Git有一个命令可以做你想做的事情,git bisect

通过二进制搜索查找引入了错误的更改

在本例中,您希望将其用作git bisect run /path/to/script,它将自动测试提交,并对每次提交执行检查以查找错误提交。

请注意,如果当前源代码是好的,则脚本(上例中的my_script)应以代码0退出,如果当前源代码不好,则脚本应以1到127 (含)之间的代码退出,125除外。

任何其他退出代码都将中止二等分进程。应该注意的是,通过“$(-1)”终止的程序会留下$?= 255 (参见exit(3)手册页),因为该值是用"& 0377“截断的。

当当前源代码无法测试时,应使用特殊退出代码125。如果脚本带着这段代码退出,当前版本将被跳过(参见上面的git二分跳过)。出于此目的,125被选为最高可感知的值,因为POSIX shell使用126和127来表示特定的错误状态(127表示未找到命令,126表示已找到但不可执行的命令-这些细节无关紧要,因为就“二等分运行”而言,它们是脚本中的正常错误)。

因此,您的脚本将编译源代码,运行单元测试套件,然后给出相应的退出代码。bisect manpage中的示例部分很好地介绍了这一点(包括损坏的构建、合并热修复提交等)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8563558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档