# 유닛 테스팅 : 코드의 일반적인 사용 상황과 특이한 사용 상황을 테스트하기 위함.####
# 모든 코드를 항상 유닛 테스트로 확인 할 수는 없음.
# install.packages("testthat")
library(testthat)
a=1:3
b=1:3
names(a)=c('a','b','c')
> a
a b c
1 2 3
> b
[1] 1 2 3
#expect_equal(object, expected) 오브젝트가 기대되는 값 익스펙티드와 동일한가
#두 객체가 (거의)같은지를 비교, 부동 소수의 경우 매우 작은 값 이하로 차이나는 두 값은 같은 값으로 취급
expect_equal(a,b) # 벡터에 부여한 이름이 다르므로 실패
#expect_equivalent() #equal 과 달리 속성값만
expect_equivalent(a,b) # 벡터에 부여한 이름을 무시하므로 테스트 성공 #두 객체가 동일 하다는 말
#expect_equal을 피보나치 수열을 이용해 예를 들어보자
fib=function(n){
if(n==0){
return(1)
}
if (n>0) {
return(fib(n-1)+fib(n-2))
}
}
#expect_equal이용해 fib(0)=1인지 확인
expect_equal(1,fib(0)) #무반응(무반응은 정상 이라는 말)
expect_equal(1,fib(1)) #오류메세지 반환.
결과>>
#이렇게 에러 메세지가 발생했다면 이에 따라 fib()함수를 올바르게 수정해나가면 된다.
#test_that을 사용한 테스트 그룹화####
#그룹화란 test_that 함수를 통해 expect 문장들을 묶어서 실행할 수 있다.
test_that("base case",{
expect_equal(1,fib(0))
expect_equal(1,fib(1))
})
결과>>
# 다음은 버그가 없도록 수정한 fibo에 대한 테스트 그룹화.
fib=function(n){
if (n==0||n==1){
return(1)
}
if(n>=2){
return(fib(n-1)+fib(n-2))
}
}
test_that("base test",{ #무반응으로 정상.
expect_equal(1,fib(0))
expect_equal(1,fib(1))
})
test_that("recursion test",{ #무반응으로 정상.
expect_equal(2,fib(2))
expect_equal(3,fib(3))
expect_equal(5,fib(4))
})
# 모든 코드를 항상 유닛 테스트로 확인 할 수는 없음.
# install.packages("testthat")
library(testthat)
a=1:3
b=1:3
names(a)=c('a','b','c')
> a
a b c
1 2 3
> b
[1] 1 2 3
#expect_equal(object, expected) 오브젝트가 기대되는 값 익스펙티드와 동일한가
#두 객체가 (거의)같은지를 비교, 부동 소수의 경우 매우 작은 값 이하로 차이나는 두 값은 같은 값으로 취급
expect_equal(a,b) # 벡터에 부여한 이름이 다르므로 실패
#expect_equivalent() #equal 과 달리 속성값만
expect_equivalent(a,b) # 벡터에 부여한 이름을 무시하므로 테스트 성공 #두 객체가 동일 하다는 말
#expect_equal을 피보나치 수열을 이용해 예를 들어보자
fib=function(n){
if(n==0){
return(1)
}
if (n>0) {
return(fib(n-1)+fib(n-2))
}
}
#expect_equal이용해 fib(0)=1인지 확인
expect_equal(1,fib(0)) #무반응(무반응은 정상 이라는 말)
expect_equal(1,fib(1)) #오류메세지 반환.
결과>>
#이렇게 에러 메세지가 발생했다면 이에 따라 fib()함수를 올바르게 수정해나가면 된다.
#test_that을 사용한 테스트 그룹화####
#그룹화란 test_that 함수를 통해 expect 문장들을 묶어서 실행할 수 있다.
test_that("base case",{
expect_equal(1,fib(0))
expect_equal(1,fib(1))
})
결과>>
# 다음은 버그가 없도록 수정한 fibo에 대한 테스트 그룹화.
fib=function(n){
if (n==0||n==1){
return(1)
}
if(n>=2){
return(fib(n-1)+fib(n-2))
}
}
test_that("base test",{ #무반응으로 정상.
expect_equal(1,fib(0))
expect_equal(1,fib(1))
})
test_that("recursion test",{ #무반응으로 정상.
expect_equal(2,fib(2))
expect_equal(3,fib(3))
expect_equal(5,fib(4))
})
댓글
댓글 쓰기