0

我在 Eclipse 中编写测试方法时遇到问题,我创建了一个 JUnit Case 类,选择了我想测试的类和方法。现在我面临一个带有空方法的类。我实际上不确定方法中的内容。我读过你需要创建一个我想测试的类的新实例,调用它的方法。我在网上看过,但没有任何意义。这是我要测试的课程的一部分:

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 方法?谢谢。

4

4 回答 4

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());
    }
}

虽然不得不说。测试一个吸气剂似乎并不那么有趣

于 2013-03-28T18:14:02.967 回答
1

您的单元测试不应与该上下文中对象的规范使用不同。由于FilmSystem是不可变的(也就是说,这些字段都没有设置器),因此您必须断言您实例化对象的内容就是您的对象返回的内容。

@Test
public void testFilmName() {
    // arrange
    FilmSystem fs = new FilmSystem("Some movie", "", "", "", 10);
    // act
    // no actions
    // assert
    assertEquals("Some movie", fs.getFilmName());
}
于 2013-03-28T18:15:35.677 回答
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);           
    }
}
于 2013-03-28T18:17:58.850 回答
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());

}
于 2013-03-28T18:13:43.560 回答