-
[Flutter] 유닛 테스트 해보기카테고리 없음 2024. 5. 25. 18:02728x90
플러터에서는 어떤 테스트 방법이 있을까?
플러터에서는 크게 유닛 테스트, 위젯 테스트, 통합 테스트로 이루어져 있습니다.
이번 글에선 유닛 테스팅을 알아보도록 하겠습니다.Unit test
유닛 테스팅은 메소트나 클래스처럼 작은 단위 즉 메서드, 클래스 같은 작은 단위를 테스트할 때 쓰입니다.
1.1 Unit Testing - 다트 기본 테스트 프레임워크
우선 test 라이브러리를 추가해 주세요.
pubspec.yaml
dev_dependencies: test: <latest_version>
test 폴더에다가 테스트 파일(testing_test.dart)을 만들어주세요.
파일 이름은 항상 test로 끝나야 하며 main 함수에서 실행되어야 합니다.
test/testing.dart
void main() { test('test1', () { expect(1 * 1, 1); }); }
간단한 예제를 만들어보았습니다. 테스트의 실행은 해당 파일에 들어가 debug->start debugging으로 실행해 볼 수 있습니다.
테스트 코드는 크게 test() 함수와 expect() 함수로 되어 있습니다.
test()는 테스트를 실행할 때 쓰이는 함수고, expect()는 테스트 실행값과 기댓값을 비교하는 함수입니다.
이렇게 기대하는 값과 실제 값이 같다면 테스트가 통과되는 모습을 볼 수 있습니다.
다음은 두 번째 예제입니다. 이 테스트는 소문자로 잘 바뀌는지 확인해 보는 테스트입니다.
void main() { test("lowercase", () { String hi = "hello"; expect(hi.toLowerCase(), "hello"); } ); }
이번에도 무사히 통과되었습니다.
그럼 기본적으로 알아야 하는 test의 기본적인 함수에 대해서 알아보겠습니다.
다트의 테스트 함수
- test
- 테스트에 대한 설명과 실제 테스트 코드를 적습니다.
- 시간제한(timeout)이나 테스트 환경 (브라우저, OS) 등도 적어줄 수 있습니다.
- expect
- expect(실제값, 기댓값)
- 테스트의 기댓값과 실제값을 비교합니다..
- setup
- 테스트를 시작하기 전에 설정을 해줍니다.
- 테스트 단위 하나마다 실행됩니다. ( test() 함수 하나가 테스트 단위 하나예요. 한 파일에 여러 test() 가 있으면 여러 번 실행됩니다. )
- setupAll
- 테스트 시작하기 전에 설정을 해줍니다.
- 파일 하나에 한 번만 실행됩니다. (데이터 베이스 설정할 때 쓰기 좋겠죠)
- teardown
- 테스트를 마치고 할 작업을 정해줍니다.
- 테스트 단위 하나마다 실행됩니다 ( setup() 함수랑 동일합니다 )
- teardownAll()
- 테스트를 마치고 할 작업을 정해줍니다.
- 파일 하나에 한번만 실행됩니다.
다음은 group() 함수로 여러 테스트를 묶어서 테스트해보겠습니다.
class Calculator { int add(int x, int y) => x + y; int minus(int x, int y) => x - y; int square(int x, int y) => x * x; } void main() { group("calculator", () { Calculator calculator = Calculator(); test("add", () => expect(calculator.add(10, 20), 30)); test("minus", () => expect(calculator.minus(30, 20), 10)); test('square', () => expect(calculator.square(2, 2), 4)); }); }
group()으로 묶은 세 가지의 테스트를 모두 통과했습니다.
728x90 - test