在RUnit testsuite中使用.setUp()和.tearDown()函数

时间:2015-06-03 14:46:04

标签: mysql r rmysql runit

我的R测试存在以下问题。我有测试函数需要更改数据库,计算结果,检查这些结果是否等于测试值并清理数据库。我正在尝试使用来自MySQL和dbBegin(con)的事务以及来自RMySQL的dbRollback(con)函数。

我试图运行以下代码:

.setUp <- function() {
dbBegin(con)
}

.tearDown <- function() {
dbRollback(con)
}

test.function1 <- function() {
....
}

test.function2 <- function() {
....
}

使用测试套件

test.suite <- defineTestSuite("example",
                              dirs = file.path("tests"),
                              testFileRegexp = '*.r')

test.result <- runTestSuite(test.suite)
printTextProtocol(test.result)

然而,当我运行多个函数时,我得到了

Error in .local(conn, statement, ...) : 
  could not run statement: Duplicate entry '-1' for key 'PRIMARY'

这意味着我永远不会回滚我在数据库中写的内容。

有人能指出上面代码中的错误和/或如何在R + RMySQL中编写测试以测试内部事务吗?

谢谢, 弗拉基米尔

1 个答案:

答案 0 :(得分:0)

这是测试改变MySQL数据库的R函数的正确方法。由于输入错误,我收到了错误。