2009-11-23 8 views
2

안녕하세요. 나는 최근에 Struts 2 액션을 검증했다. 내 작업 클래스 중 하나 인 정확한 save 메소드에는 두 개의 id가 있어야합니다. 평가 유형 ID 및 코스 ID입니다. 이것은 지금까지 있었던 것입니다.Struts 액션 유효성 검사

@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와 평가 유형을 완벽하게 작동 시키려면 반드시 존재해야합니다.

질문은 그러므로 평가 유형 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

무엇이 문제입니까? –

+1

당신은 실제로 질문을하지 않았고이 코드로 당신이 무엇을하려하는지 짐작하지 않았습니다. 이것은 행동의 단위 테스트 인 것으로 보입니다. 어쩌면 액션이하는 일과 어떻게 테스트 할지를 기술 할 수 있습니다. 그러면 몇 가지 대답이 나올 수 있습니다. –

+0

action.save()는 무엇을합니까? – Trick

답변

1

단위 테스트 코드에서는 테스트 할 방법에 대한 사양부터 시작해야합니다. 테스트하려는 메소드를 살펴보고 스펙이 무엇인지 추측 해 봅시다.

  1. 몇 가지 변수가 취소하는 경우

    가 null 다음 방법은, 그렇지 않으면 (그렇지 않으면 라인 boolean isNew = (assessment.getId() == null);이 실패하고 당신이 null이 확인되지 않음) 즉시
  2. 평가 객체가 null 일 수 없습니다 반환 수행합니다. 다른 곳에서는 isNew를 사용하지 않으므로이 줄은 코드에서 어떤 용도로도 사용되지 않습니다.
  3. assessmentType는 그것이

이 그냥 난 그래서 당신의 코드에서 추측이다

  • 물론이 null이 존재 미리해야하며 사전에 있어야합니다
  • assessmentManager가 null이 아닌 존재이며, 또한 null가 아닌 틀림없이 이것들 이상을 가지고 계셔.

    이제 각 테스트를 한 번에 테스트하는 테스트를 작성하려고합니다. 일반적으로 테스트 메소드가 정확히 한 가지를 테스트하기를 원합니다. 일부 추가 정보는 설명에서 빠져 있지만 다시 추측하겠습니다.

    struts2 조치 클래스에서이 조치가 호출되기 전에 취소 오브젝트, assessmentType, 코스 및 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 
    

    그런 다음 null 이외 평가 등 작동 ... 그리고 것을 테스트합니다. 이러한 각각의 테스트는 그 자체로 하나의 방법입니다.

    이 정보가 도움이되기를 바랍니다.

  • 관련 문제