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 に答える