2017-07-21 5 views
1

私のテストの1つに、特定の警告を生成するコードが含まれています。この警告が表示されたら、私はそれを無視したいと思います。しかし、他の警告があれば、私はそれをエラーとして捕捉したいと思います。 testthatでこれを達成する最も簡単な方法は何ですか?時々のみ発生する特定の警告を無視する

アプリケーションはランダム化されたテストや、関数への入力が警告が発生するようなものかどうかを事前に判断することが困難なその他の状況があります。

玩具例:もちろん

library(testthat) 

for (i in 0:100) { 
    a <- sample(100, 1) - 5 
    result <- (a + 0):(a + 10)/(a + 10):(a + 0) 
    result2 <- (log(min(result))) 
} 

は、このおもちゃの例では、result < 0かどうかを確認することは容易です。

答えて

0

testthat::expect_warningを見て触発され、次の作品、:使用testthat::capture_warningと警告分析:

library(testthat) 

for (i in 0:100) { 
    a <- sample(100, 1) - 5 
    result <- (a + 0):(a + 10)/(a + 10):(a + 0) 
    w <- capture_warnings(result2 <- (log(min(result)))) 
    if (length(w) > 0) { 
    expect_match(w, regexp = "^$|.*NaNs produced.*") 
    } 
    print(result2) 
} 
関連する問題