2013-03-28 4 views
0

Eclipse에서 테스트 메소드를 작성하는 데 문제가 있습니다. JUnit 사례 클래스를 만들고 테스트 할 클래스와 메소드를 선택했습니다. 이제 빈 메서드가있는 클래스가 생겼습니다. 나는 그 방법들에서 실제로 무엇을 할 지 확신하지 못한다. 내가 테스트 한 클래스의 새 인스턴스를 만들어야한다는 것을 읽었습니다. 메소드를 호출합니다. 나는 온라인으로 보았지만 아무런 의미가 없다. 이 클래스는 테스트하려는 클래스의 일부입니다.Eclipse에서 Java 테스트, 작성 방법

public class FilmSystem { 


private String filmName; 
private String lecture; 
private String ageRating; 
private String ticketCost; 
private int noOfSeats; 

public FilmSystem(String film, String lect, String age, String price, int seats){ 
    filmName = film; 
    lecture = lect; 
    ageRating = age; 
    ticketCost = price; 
    noOfSeats = seats; 


} 

public String getFilmName(){ 
    return filmName; 
} 

getFilmName 메서드는 어떻게 테스트 할 수 있습니까? 감사합니다. .

+0

'FilmSystem'유형의 객체를 인스턴스화하고 그 위에 메소드를 호출하십시오. 'FilmSystem filmSystem = 새로운 영화 시스템 ("영화", "강의", "나이", "가격", 4); filmSystem.getFilmName();' –

+0

질문에 답하면 제 대답을 수락 할 수 있습니까? 아니면 제가 적응할 수 없었던 방법을 알려주십시오. –

답변

2

빠른 예 :

public class FilmSystem{ 

    private String filmName; 
    private String lecture; 
    private String ageRating; 
    private String ticketCost; 
    private int noOfSeats; 

    public FilmSystem(String film, String lect, String age, 
         String price, int seats){ 
     filmName = film; 
     lecture = lect; 
     ageRating = age; 
     ticketCost = price; 
     noOfSeats = seats; 

    } 

    public String getFilmName(){ 
     return filmName; 
     } 

} 

public class FilmSystemTest{ 

    @Test 
    public void shouldReturnCorrectName(){ 
     FilmSystem filmSystem = new FilmSystem("Ocean's Eleven", "", "", "", 0); 

     Assert.assertEquals("Ocean's Eleven", filmSystem.getFilmName()); 
    } 
} 

내가 가지고 있지만

말할. 게터를 테스트 할 때은 그리 흥미롭지 않습니다.

+0

그게 효과가있어, 나는 지금해야 할 일이 무엇인지 이해한다. 전에 올바른 라인에 있었지만 올바른 장소에서 일을하지 않았습니다. 그리고 그것은 흥미 롭지 않지만 요구 사항입니다. 그래서 나는 농구를 뛰어 넘고 있습니다. 건배. – user2092012

+0

필드 나 변수에 "Ocean 's Eleven"을 넣으므로 오타로 인해 테스트가 실패하지 않습니다. 클래스에 부적합 ('s)을 삭제하고 실수로 "Ocean Eleven"을 입력 한 버그가 있으면 어떻게합니까? 오타가 발생하지 않도록하십시오. –

+0

둘째, 항상 어설 션에 메시지를 넣으십시오. 그것은 당신이 그것을 할 때 고통처럼 보입니다. 몇 달 또는 몇 년 안에 하나의 실패가 나타나고 테스트 한 내용을 기억할 수 없으면 첫 번째 매개 변수 메시지가 유용합니다. 덧글보다. –

0

나머지는 입력해야합니다 (또는 Eclipse에서 수행해야합니다). 나는 게으르다.

private static final String FILM = "Casa Blanca"; 
.. similar for all ... 

@Test 
public void testFilmName() { 

    FilmSystem f = new FilmSystem(FILM, LECTURE, AGE_RATING, PRICE, SEAT_COUNT); 
    assertEquals("File name is wrong", FILM, f.getFilmName()); 

} 
1

단위 테스트는 해당 상황에서 개체의 표준 사용과 달라야합니다. FilmSystem은 변경 불가능하므로 (즉, 해당 필드에 setter가없는 경우) 객체를 인스턴스화하는 것은 객체가 반환하는 것임을 주장해야합니다.

@Test 
public void testFilmName() { 
    // arrange 
    FilmSystem fs = new FilmSystem("Some movie", "", "", "", 10); 
    // act 
    // no actions 
    // assert 
    assertEquals("Some movie", fs.getFilmName()); 
} 
1

단위 테스트 철학은 AAA이다, 법을 마련하고 당신은 아마 같은 클래스에 대한 테스트를 필요가 없습니다

어설하지만, 여기에 일반적인 생각이다.

public class TestFilmSystem { 

    @Test 
    public void test_get_film_name(){ 
     /* 
     * Arrange 
     */   
     String expectedFilmName = "Hobbit- An unexpected journey"; 
     FilmSystem fs = new FilmSystem(expectedFilmName, "xpto", "12", "12.99€", 100);  
     /* 
     * Act 
     */ 

     String resultFilmName = fs.getFilmName();   
     /* 
     * Assert 
     */   
     Assert.assertEquals(expectedFilmName,resultFilmName);   
    } 
}