2010-08-31 182 views
0

我们有一套集成测试依赖于相同的一组静态数据。由于数据量巨大,我们不希望按照测试级别进行设置。是否可以在开始时设置数据,运行测试组并在测试结束时回滚数据。Grails集成测试套件

我们有效地想要的是回滚测试套件级别而不是测试用例级别。我们使用的是Grails 1.3.1,任何指针都会对我们继续有很大的帮助。提前致谢。

-Prakash

回答

0

一个测试用例,你可以使用:

@BeforeClass 
public static void setUpBeforeClass() throws Exception { 
} 

@AfterClass 
public static void tearDownAfterClass() throws Exception { 
} 

没有尝试过一套测试用例(还)。

我在静态方法中使用findByName时遇到了一些麻烦,不得不求助于保存一个id并使用get。

我确实尝试了一个套件,但没有快乐,得到:没有可运行的方法。

0

您可以通过将您的测试案例标记为非事务性并自行管理数据,事务和回滚来控制事务/回滚行为。例如:

class SomeTests extends GrailsUnitTestCase { 

    static transactional = false 
    static boolean testDataGenerated = false 

    protected void setUp() { 
     if (!testDataGenerated) { 
      generateTestData() 
      testDataGenerated = true 
     } 
    } 

    void testSomething() { 
     ...test... 
    } 

    void testSomethingTransactionally() { 
     DomainObject.withTransaction { 
      ...test... 
     } 
    } 

    void testSomethingTransactionallyWithRollback() { 
     DomainObject.withTransaction { status -> 
      ...test... 
      status.setRollbackOnly() 
     } 
    } 
}