2

編集:

~/.Rprofile内にロードされていない可能性はありますかcheck()~/.Rprofileがロードされていないため、プロセス全体が失敗したようです。

編集完了

の自動テストで奇妙な問題が発生しましたtestthat。実際、パッケージをテストすると、test()すべて正常に動作します。しかし、テストするとcheck()エラーメッセージが表示されます。

エラーメッセージには次のように記載されています。

1. Failure (at test_DML_create_folder_start_MQ_script.R#43): DML create folder start MQ Script works with "../DML_IC_MQ_DATA/dummy_data" data 
  capture.output(messages <- source(basename(script_file))) threw an error

  Error in sprintf("%s folder got created for each raw file.", subfolder_prefix) : 
    object 'subfolder_prefix' not found

このエラーの前に、変数を定義するスクリプトを入手しました。subfolder_prefixこれが、この場合に機能する理由だと思いますtest()check()しかし、私はこれを関数でも実行することを期待していました。

完全なテスト スクリプトをここに投稿します。複雑でないことを願っています。

library(testthat)
context("testing DML create folder and start MQ script")
test_dir <- 'dml_ic_mq_test'
start_dir <- getwd()

# list of test file folders
data_folders <- list.dirs('../DML_IC_MQ_DATA', recursive=FALSE)

for(folder in data_folders) { # for each folder with test files
  dir.create(test_dir)
  setwd(test_dir)

  script_file <- a.DML_prepare_IC.script(dbg_level=Inf) # returns filename I will source 

  test_that(sprintf('we could copy all files from "%s".', 
                    folder), {
                      expect_that(
                        all(file.copy(list.files(file.path('..',folder), full.names=TRUE), 
                                      '.', 
                                      recursive=TRUE)), 
                        is_true())
                    })
  test_that(sprintf('DML create folder start MQ Script works with "%s" data', folder), {
    expect_that(capture.output(messages <- source(basename(script_file))), 
                not(throws_error()))
  }) 
  count_rawfiles <- length(list.files(pattern='.raw$'))
  created_folders <- list.dirs(recursive=FALSE)
  test_that(sprintf('%s folder got created for each raw file.',
                    subfolder_prefix), {
                      expect_equal(length(grep(subfolder_prefix, created_folders)),
                                   count_rawfiles)
                    })
  setwd(start_dir)  
  unlink(test_dir, recursive=TRUE)
}

私のスクリプトでは、変数を定義しsubfolder_prefix <- 'IC_'、テスト内で、生ファイルごとに同じ数のフォルダーが作成されているかどうかを確認します...これが私のスクリプトが行うべきことです...

私が言ったように、私はここでこの問題をデバッグする方法がわかりませtest()check()

4

1 に答える 1

2

調べることがわかったのでdevtools、答えを見つけることができます。ドキュメントによると、 check「既知のすべてのベストプラクティスを使用して、ソースパッケージを自動的にビルドおよびチェックします」。これには、.Rprofile を無視することも含まれます。check呼び出しのように見えbuild、そのすべての作業が別の (クリーンな) R セッションで行われます。対照的testに、現在実行中のセッションを (新しい環境で) 使用しているように見えます。

于 2015-12-01T20:40:20.257 に答える