Struts Action Validation
问题描述:
嘿,人们。我最近验证了Struts 2的行为。 在我的一个动作类中,保存方法必须有两个id。 这是一个评估类型ID和课程ID。 这是迄今为止。Struts Action Validation
@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对用户是隐藏的,但为了保存评估,它必须存在。也保存评估他们有一个选择一个评估类型。因此对于保存方法来说,它必须存在。
因此,问题是我不知道如何测试和实施课程ID以及评估类型ID。
再次感谢。 所有帮助将不胜感激
保存操作方法如下所述;
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";
}
答
当单元测试代码需要以您正在测试的方法的规范开始时。让我们看看您正在尝试测试的方法,并“猜测”规格是什么。
- 如果某些变量取消为null,则执行该方法,否则立即返回
- 评估对象不能为空(否则线
boolean isNew = (assessment.getId() == null);
会失败,你是不是检查空)。在另一个注释中,这行代码在您的代码中似乎没有任何用处,因为您不在其他地方使用isNew。 - assessmentType也是非空的,那就是它必须预先存在
- 当然不为空,或者必须预先存在
- assessmentManager不为空
这些都只是猜测,从你的代码,所以我当然你有更多这些。
现在你想写测试,每次测试这些每一个。通常你想要一个测试方法来精确地测试一件事。描述中还缺少一些进一步的信息,但让我们再次猜测。
在您的struts2动作类中,您将在调用此动作之前设置取消对象,评估类型,课程和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
然后测试非空评估工作......等。每个测试都是一种方法。
我希望这会有所帮助。
什么问题? – 2009-11-23 19:44:44
你实际上没有问过一个问题,而且很难猜测你想用这段代码来完成什么。这似乎是你的行动的单元测试。也许你可以描述这个动作的作用以及你打算如何测试它。然后一些答案可能即将出现。 – 2009-11-26 04:24:25
你的action.save()做了什么? – Trick 2009-11-30 15:39:52