如果没有Git知道代码,代码是否可以改变?

B S*_*ven 6 git testing unit-testing solid-state-drive ruby-on-rails

今天早上我进行了测试,有2次失败.但我几天没有更改任何代码,所有测试都通过了.

根据Git,没有变化(coverage.data除外,它是测试输出).gitk没有显示其他变化.

Git如何知道代码何时发生变化?这可能是由SSD故障/错误引起的吗?

弄清楚发生了什么的最好方法是什么?

编辑:使用单元测试框架在Ruby on Rails上工作.

Mik*_*sen 10

我首先要弄清楚为什么测试失败了,这可能会给你一些线索,告诉他们之前的测试结果.有时这是一个时间问题,间歇性故障,测试工具外部的东西,数据变化,日期或时间的变化,各种各样的东西.

  • 是的,你是对的.当我运行`DateTime.Today.AddMonths(-6).AddMonths(6).ToShortDateString();`在调试器下,我得到'10/30/2011' - 似乎当我减去6mon时,我会回来的到4月30日(因为4月没有第31天),但是当我加上6mon时,我将在10月30日到达.我想这是有道理的. (2认同)

Sch*_*ern 9

我看到迈克找到了你的问题(请给小答案框打勾).

是的,代码可以在没有Git知道的情况下进行更改.导致失败的文件(可能是临时测试文件或夹具)可以在.gitignore或.git/info/exclude中忽略.做一个git clean -dxf遗嘱清除结账清理任何不知道的git. git status --ignored将显示git忽略的文件.如果是这种情况,您希望在测试运行器中添加更好的测试清理.

对于后代,这里是测试可能失败的方式的简短列表,没有任何代码更改可见git:

  • "临时"测试文件和固定装置可能很脏.
  • "临时"数据库和表可能很脏.
  • 它对时间或日期很敏感.
  • 它使用网络资源,但它们发生了变化
  • 编译器已更改.
  • 使用的已安装库已更改.
    • 库使用的库已更改.
  • 内核被改变了.
  • 使用的任何服务器(数据库,Web服务器等)都已更改.
  • 它使用并行处理,有时只会出现细微的错误.
  • 磁盘(或临时文件所在的文件系统)已满.
  • 磁盘(或临时文件所在的文件系统)已损坏.
  • 你的内存/磁盘/进程/文件句柄配额减少了.
  • 机器内存不足.
  • 机器已用完文件句柄.
  • 它使用具有随机生成数据的灯具并生成一些漏洞.