对于我的项目,其中一个返回必须为null。使用<%= form_for(@task) do |f| %>
<%= f.check_box :important, {}, disabled="disabled" %>
<% end %>
进行测试时,其失败并显示assertNull(Null Object here)
。
有人可以告诉我为什么吗?我认为assertNull应该测试为null。
这是我的代码的一部分。
NullPointerException
我的测试用例是:
public static UVI calculateUVI(double[] radiation) {
double calculation = 0.0;
double[] copyRad = new double[radiation.length];
for (int i = 0; i < radiation.length; i++)
{
copyRad[i] = radiation[i];
if (radiation[i] > RADIATION_MAXIMUM)
copyRad[i] = RADIATION_MAXIMUM;
if (radiation[i] < RADIATION_MINIMUM)
copyRad[i] = 0.0;
calculation += (copyRad[i] * MD_WEIGHTS[i]);
}
if (radiation.length != MD_WEIGHTS.length || radiation == null) {
UVI nulled = null;
return nulled;
}
calculation /= B;
UVI result = new UVI(calculation, true);
return result;
}
答案 0 :(得分:3)
问题不在于断言声明。
传入数组calculateUVI(...)
时,您正在使用空数组调用test9
。
由于数组为null radiation.length
将在方法中抛出NullPointerException
。
由于该方法无法使用null数组运行,因此您可以添加&#34; Guard Clause&#34;并且只需从方法中立即返回null,这样您的测试就会成功。
public static UVI calculateUVI(double[] radiation) {
if(radiation == null) {
return null;
}
...
}