我们有一组依赖于同一组静态数据的集成测试。由于数据量很大,我们不想为每个测试级别设置它。是否可以在开始时设置数据,运行测试组并在测试结束时回滚数据。
我们实际上想要的是测试套件级别而不是测试用例级别的回滚。我们正在使用 grails 1.3.1,任何指针都会对我们继续进行非常有帮助。提前致谢。
-普拉卡什
我们有一组依赖于同一组静态数据的集成测试。由于数据量很大,我们不想为每个测试级别设置它。是否可以在开始时设置数据,运行测试组并在测试结束时回滚数据。
我们实际上想要的是测试套件级别而不是测试用例级别的回滚。我们正在使用 grails 1.3.1,任何指针都会对我们继续进行非常有帮助。提前致谢。
-普拉卡什
对于一个测试用例,您可以使用:
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
还没有尝试过一套测试用例(还)。
我在静态方法中使用 findByName 确实遇到了一些麻烦,不得不求助于保存 id 并使用 get。
我确实尝试过卷起一个套件,但没有高兴,得到一个:没有可运行的方法。
您可以通过将测试用例标记为非事务性并自己管理数据、事务和回滚来控制事务/回滚行为。例子:
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()
}
}
}