1

R テストで次の問題があります。データベースを変更し、結果を計算し、これらの結果がテスト値と等しいかどうかを確認し、データベースをクリーンアップする必要があるテスト機能があります。MySQL からのトランザクションと、RMySQL からの dbBegin(con) および 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でテストを記述してトランザクション内でテストする方法を誰かが指摘できますか?

ありがとう、ウラジミール

4

1 に答える 1