invalid_use_of_visible_for_testing_member — 테스트 전용 멤버를 다른 곳에서 사용
invalid_use_of_visible_for_testing_member — 테스트 전용 멤버를 다른 곳에서 사용
@visibleForTesting로 표시된 멤버를, 선언된 라이브러리 밖이면서 test 디렉토리에 있지 않은 곳에서 참조하면 나타나는 진단이에요. 테스트 전용 멤버를 어디서 쓸 수 있는지, 어떻게 고치는지 설명해 드릴게요.
본문
분석기는 @visibleForTesting 어노테이션이 달린 멤버를, 선언된 라이브러리도 아니고 test 디렉토리에 있는 라이브러리도 아닌 곳에서 참조할 때 이 진단을 내보내요.
즉, 이 멤버는 두 곳에서만 쓸 수 있어요. 하나는 정의된 라이브러리, 다른 하나는 test 디렉토리 안의 코드예요.
예시
먼저 c.dart 파일에 아래 내용이 있다고 해볼게요.
import 'package:meta/meta.dart';
class C {
@visibleForTesting
void m() {}
}
아래 코드가 test 디렉토리 밖에 있을 때 진단이 나타나요. 메서드 m이 테스트에서만 보이도록 표시돼 있기 때문이에요.
import 'c.dart';
void f(C c) {
c.m();
}
흔한 해결 방법
만약 이 멤버가 테스트 밖에서는 절대 참조되면 안 된다면, 참조를 제거하면 돼요.
import 'c.dart';
void f(C c) {}
반대로, 이 멤버를 테스트 밖에서 참조해도 괜찮다면 어노테이션을 제거해 주면 돼요. 그러면 일반 public 멤버가 돼서 어디서든 쓸 수 있게 돼요.
class C {
void m() {}
}
더 알아보기
visibleForTesting어노테이션의 정의는package:meta문서를 참고하세요.- Dart에서 테스트를 구성하는 방법(
test디렉토리 구조 등)은 Dart 테스트 문서를 확인해 보세요.