2016-12-01 61 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

相关问题