我最近遇到了一个奇怪的问题,测试在我们的Bamboo盒子上失败了,但在dev盒子上却没有。经过大量调试后,我们发现原因是由于在Long上使用==而不是.equals。一旦我弄清楚它是有意义的,但我很惊讶没有开发人员可以重新创建它,但它总是发生在构建框上。
对于我们的测试,抓住这些东西并尝试防止==它不是有意的,这是很好的,但我不知道告诉Java不实习Longs,Strings等的方法。 ..是否有一个设置可以给JVM来处理这个?
答案 0 :(得分:8)
检测此类问题的一个选项是在构建期间对代码执行静态分析。我相信FindBugs有一个参考平等检测器。
答案 1 :(得分:0)
快速谷歌搜索空白,但我相信有一个命令行参数来控制长缓存的大小(默认为256)。这是我在一年前在StackOverflow上读到的东西,所以,按照SO来付费是值得的!如果你能找到它并在你的测试机器上将其设置为零,它将覆盖这个特殊问题。
找到它 - 看看问题#2974561。@sunny接近尾声回答。
嗯,更详细地看一下,你可能会增加缓存,但不会减少。所以不要认为这会奏效,但也许你可以搞清楚。