这是我的测试:
@Test
public void randomDouble() {
int Min = -1;
int Max = 1;
double r;
for (int i = 0; i < 5; i++) {
r = Min + (Math.random() * ((Max - Min) + 1));
System.out.printf("%d %d: %.1f\n", Min, Max, r);
assertTrue(Max < r && Max > r);
}
}
似乎在第一次运行循环中的assertTrue语句后返回测试。如果我删除它,我得到5结果输出。有了它,我只得到一个。
我在Python中使用这种模式进行模糊测试。
答案 0 :(得分:5)
断言在第一次迭代时失败;它永远不能通过(r
如何比Max
更大和?)。
答案 1 :(得分:3)
没有什么可以限制断言进入循环。
其他一些观点:
测试将始终失败(请参阅下一个项目,了解您可能需要的内容)
java在语言中有一个断言:assert Min <= r && r <= Max : "bad range"
((Max - Min) + 1)
中的“+1”对我来说似乎不对
答案 2 :(得分:1)
即使您将断言更改为assertTrue(Min < r && Max > r);
,这似乎是预期的,但测试仍然经常在第一次迭代时失败:r = Min + (Math.random() * ((Max - Min)+1));
中的“+1”错误。