2009-11-23 70 views
2

嘿,人们。我最近验证了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"; 

} 
+1

什么问题? – 2009-11-23 19:44:44

+1

你实际上没有问过一个问题,而且很难猜测你想用这段代码来完成什么。这似乎是你的行动的单元测试。也许你可以描述这个动作的作用以及你打算如何测试它。然后一些答案可能即将出现。 – 2009-11-26 04:24:25

+0

你的action.save()做了什么? – Trick 2009-11-30 15:39:52

回答

1

当单元测试代码需要以您正在测试的方法的规范开始时。让我们看看您正在尝试测试的方法,并“猜测”规格是什么。

  1. 如果某些变量取消为null,则执行该方法,否则立即返回
  2. 评估对象不能为空(否则线boolean isNew = (assessment.getId() == null);会失败,你是不是检查空)。在另一个注释中,这行代码在您的代码中似乎没有任何用处,因为您不在其他地方使用isNew。
  3. assessmentType也是非空的,那就是它必须预先存在
  4. 当然不为空,或者必须预先存在
  5. 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 

然后测试非空评估工作......等。每个测试都是一种方法。

我希望这会有所帮助。