Grails集成测试套件

时间:2010-08-31 09:41:25

标签: testing grails integration-testing test-suite

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

我们真正想要的是测试套件级别的回滚而不是测试用例级别。我们使用的是grails 1.3.1,任何指针对我们来说都非常有帮助。提前谢谢。

-Prakash

2 个答案:

答案 0 :(得分:0)

对于您可以使用的一个测试用例:

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

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

尚未尝试过一套测试用例(<)。

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

我确实试过卷起一个套房,但没有快乐,得到一个:没有可运行的方法。

答案 1 :(得分: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()
        }
    }
}