开发者

Grails integration testsuite suite

We have a set of integration test which 开发者_运维问答depend upon same set of static data. Since the amount of data is huge we dont want to set it up per test level. Is it possible to setup data at the start, run group of test and rollback the data at the end of test.

What we effectively want is the rollback at test suite level rather than test case level. We are using grails 1.3.1, any pointers would be highly helpful for us to proceed. Thanks in advance.

-Prakash


for one test case you could use:

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

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

haven't tried a suite of test cases (yet).

i did have some trouble using findByName in the static methods and had to resort to saving an id and using get.

i did try rolling up a suite, but no joy, getting a: no runnable methods.


You can take control of the transaction/rollback behaviour by marking your test case as non-transactional and managing data, transactions and rollbacks yourself. Example:

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()
        }
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜