@Test
public void testSave() {
Assessment assessment = new Assessment();
assessment.setAssessmentType(assessment.getAssessmentType());
assessment.setCourse(assessment.getCourse());
assessment.setAmount(2);
assessment.setDescription("A test Description");
assessment.setPercentage(20.0);
action.setAssessment(assessment);
action.save();
assertNotNull(action.getAssessment().getId());
}
所有帮助将不胜感激。
嘿抱歉偷看, 我教过我问过这个问题。 但我想要真正实现的是测试我用于评估的动作类。 例如,如果客户端在添加评估时使用该应用程序,则会向用户隐藏课程ID,但为了保存评估,它必须存在。为了保存评估,他们选择了一种评估类型。因此,为了使save方法能够完美地运行课程id和assessmenttype,它必须存在。
因此,问题是我真的不知道如何测试和实现课程ID以及评估类型ID。
再次感谢。 所有的帮助将不胜感激
Save Action方法如下所述;
public String save(){
if (cancel != null) {
return "cancel";
}
boolean isNew = (assessment.getId() == null);
assessmentType.addAssessment(assessment);
course.addAssessment(assessment);
assessment = assessmentManager.save(assessment);
return "save";
}
答案 0 :(得分:1)
在单元测试代码时,您需要从正在测试的方法的规范开始。让我们来看看你试图测试和“猜测”规范是什么的方法。
boolean isNew = (assessment.getId() == null);
将失败,您不检查null)。另外请注意,由于您不在其他任何地方使用isNew,因此该行似乎没有任何用途。这些只是来自您的代码的猜测,因此我相信您拥有的不仅仅是这些。
现在您要编写测试,一次测试这些测试中的每一个。通常,您需要一种测试方法来精确测试一件事。描述中也缺少一些进一步的信息,但让我们再次猜测。
在struts2操作类中,您要在调用此操作之前设置cancel对象,assessmentType,course和asessmentManager。然后,在调用操作之前,需要在测试方法中设置所有这些。
因此,要测试第一个点,您要设置变量cancel。也许是这样的:
action.setCancel(Some Object);
action.save();
//now test the result condition to see if it behaved as expected.
然后测试第二点你可以使用这样的代码:
//testing that null assessment throws NullPointerException
action.setAssessment(null);
action.save();
//now test that the exception was thrown
然后测试非空评估是否有效......等等。每个测试都是一种方法。
我希望这会有所帮助。