bir şeyin doğru olup olmadığını kontrol eden ve değilse belirli bir hata mesajını yazdırıp çıkan bir ifade
Yanıtlar:
Runit gibi paketlerle de ilgilenebilir ve bunu birim testi için test edebilirsiniz.
stopifnot()
bu kodu test etmek geçerlilik testi için, bu yapıyor olması gerekenin yapıyor, ancak if (blahdiblah) stop("error message")
giriş testi için, teste programa girdi geçerli olduğunu. Normal kullanım sırasında yalnızca ikincisi gerçekleşmelidir.
assertthat
, olduğundan daha iyi yanıtlar veren Hadley'in yeni paketine bakın stopifnot
: github.com/hadley/assertthat
@Nick:
Programınızda bir hata oluşturacak koşulu test etmek için açıklayıcı bir adla bir işlev yazarsanız, hata mesajınızı kontrol edebilirsiniz. İşte bir örnek:
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
Bu, 1'den 8'e kadar olan sayıları yazdıracak ve ardından
Error: Less_Than_8(i) is not TRUE
Parantez içindeki "i" harfinin testi geçemeyen değerle değiştirilmesi güzel olurdu, ancak ödediğinizin karşılığını alırsınız.
Bundan daha süslü bir şeye ihtiyacınız varsa, Runit'e bakın ve Harlan'ın önerdiği gibi test edin.
stopifnot()
.
Bu, stop
komutla sağlanabilir . Bu komut, bir işlevin yürütülmesini durduracak ve hata mesajını yazdıracaktır. Örneğin, değişkenin something
şu olup olmadığını test edebiliriz FALSE
:
if(something == FALSE){
stop("error message to print")
}
Benzer şekilde, warning
komut bir uyarı yazdıracaktır (ancak kodu yürütmeye devam edecektir).
if(something == FALSE){
warning("error message to print")
}
Bunların her ikisi de temel R tarafından sağlanır ve hiçbir paketin çalıştırılmasını veya kendi işlevlerinizi yazmanızı gerektirmez. Bu yaklaşımı daha az bağımlılıkla kod yazmak için tercih ediyorum ve bu sözdizimi paket geliştirmede yaygın olarak kullanılıyor. Bununla birlikte, benzer işlevsellik, assert_that
Hadley'in "tidyverse" in bir parçası olarak yakın zamanda piyasaya sürülen işlevle "assertthat" paketi tarafından desteklenmektedir .