2016-12-01 33 views

回答

1

當您需要在您的項目,以測試模型的功能,你可以使用類DBSpec作爲超一流的JUnit測試的是這樣的:

public class MovieSpec extends DBSpec { 

    @Test 
    public void shouldValidateMovieAttributes() { 
     Movie movie = new Movie(); 
     the(movie).shouldNotBe("valid"); 
     movie.set("title", "blah", "year", "1122"); 
     the(movie).shouldBe("valid"); 
    } 

    @Test 
    public void shouldStoreDirectorAndMovies() { 

     Person director = new Person("Stephen Spielberg"); 
     director.saveIt(); 

     director.add(new Movie("Saving private Ryan", 1998)); 
     director.add(new Movie("Jaws", 1982)); 

     a(Movie.count()).shouldBeEqual(2); 

     List<Movie> movies = director.getAll(Movie.class).orderBy("year"); 

     the(movies.get(0).getTitle()).shouldBeEqual("Jaws"); 
     the(movies.get(1).getTitle()).shouldBeEqual("Saving private Ryan"); 
    } 
} 

很多事情都發生在這裏。超類DBSpec將做自動如下:

測試前執行:

  • 打開一個連接
  • 數據庫連接

上啓動一個新的事務處理測試執行後:

  • 回滾數據庫事務(刪除,插入更新)
  • 關閉數據庫連接

這樣,你只寫是關係到你的業務邏輯代碼,而不用擔心打開/關閉連接。

此外,因爲DBSpec回滾您的交易,您的測試數據庫始終處於乾淨狀態。有關顯示其工作原理的完整示例,請參閱:https://github.com/javalite/simple-example

相關問題