2009-11-23 68 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 

然後測試非空評估工作......等。每個測試都是一種方法。

我希望這會有所幫助。