특정 Android SDK 버전에 대한 junit 테스트를 무시할 수있는 특수 효과 또는 다른 편리한 방법이 있습니까? Lint 주석 TargetApi (x)와 비슷한 것이 있습니까? 또는 Build.VERSION을 사용하여 테스트를 수동으로 실행할지 여부를 수동으로 확인해야합니까?SDK 수준에 따라 Android 단위 테스트를 무시합니다.
6
A
답변
9
나는 뭔가 준비가되어 있다고 생각하지 않지만 이것을위한 맞춤 주석을 만드는 것은 꽤 쉽습니다.
당신의 시험 테스트 러너 Ovverride 사용자 정의 주석
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TargetApi {
int value();
}
(즉, 테스트 값을 확인하고 결국 무시/발광합니다)
public class ConditionalTestRunner extends BlockJUnit4ClassRunner {
public ConditionalTestRunner(Class klass) throws InitializationError {
super(klass);
}
@Override
public void runChild(FrameworkMethod method, RunNotifier notifier) {
TargetApi condition = method.getAnnotation(TargetApi.class);
if(condition.value() > 10) {
notifier.fireTestIgnored(describeChild(method));
} else {
super.runChild(method, notifier);
}
}
}
생성 및 표시
@RunWith(ConditionalTestRunner.class)
public class TestClass {
@Test
@TargetApi(6)
public void testMethodThatRunsConditionally() {
System.out.print("Test me!");
}
}
그냥 테스트, 그것은 나를 위해 작동합니다. :)
2
나는이 질문에 대한 답을 찾고 있었고, 버전을 확인하는 것보다 더 좋은 방법을 발견하지 않았습니다. 나는 다음과 같은 안드로이드 TestCase
메쏘드에 체크를 넣어 조건부로 테스트 논리의 실행을 억제 할 수 있었다. 그러나 이것이 실제로 개별 테스트가 실행되는 것을 방해하지는 않습니다. 이와 같이 runTest()
메소드를 재정의하면 작동하지 않을 API 수준에서 테스트가 "통과"됩니다. 테스트 논리에 따라 tearDown()
도 무시할 수 있습니다. 어쩌면 누군가가 더 나은 해결책을 제시 할 것입니다.
@Override
protected void setUp() throws Exception {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {
if (Log.isLoggable(TAG, Log.INFO)) {
Log.i(TAG, "This feature is only supported on Android 2.3 and above");
}
} else {
super.setUp();
}
}
@Override
protected void runTest() throws Throwable {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {
assertTrue(true);
} else {
super.runTest();
}
}
관련 문제
- 1. Android SDK 수준에 따라 Java 객체를 형변환합니다.
- 2. PSR에 따라 단위 테스트를 수행해야합니까?
- 3. Resharper는 사용 분석을위한 단위 테스트를 무시합니다.
- 4. 유닛 테스트를 무시합니다.
- 5. 목적에 따라 코드를 깨서 단위 테스트를 확인하십시오.
- 6. 단위 테스트를 단위 테스트합니까?
- 7. 로그 수준에 따라 echoproperties 작업
- 8. 테스트를 위해 무시합니다
- 9. Android Studio에서 단위 테스트를 실행하는 동안 NoClassDefFoundError
- 10. android 모듈에서 단위 테스트를 실행하는 방법은 무엇입니까?
- 11. 단위 테스트 방법 JVM에서 Android SDK 클래스를 사용하는 POJO?
- 12. Resharper 6은 모든 테스트를 무시합니다.
- 13. FrameBuffer에 그리기는 깊이 테스트를 무시합니다.
- 14. Android SDK 클래스의 Kotlin 확장 기능 단위 테스트
- 15. 단위 테스트를 실행하는 MSBuild
- 16. 어떤 단위 테스트를 작성해야합니까?
- 17. 단위 테스트를 찾는 방법
- 18. 단위 테스트를 어디서 실행해야합니까?
- 19. 추출 IF-ELSIF 자신의 수준에 따라 조건
- 20. API 수준에 따라 앱 위젯 숨기기
- 21. PHP의 사용자 수준에 따라 사용자를 제한하는 방법
- 22. API 수준에 따라 구현 (스위치 \ 토글 버튼)
- 23. 수준에 따라 문자열로 DataFrame 행 값을 병합
- 24. 격리 수준에 따라 원래의 데이터를 읽는 방법
- 25. 확대/축소 수준에 따라 QGraphicsScene 렌더링
- 26. DAO (단위 저장소)는 단위 테스트를 받아야합니까?
- 27. Maven에서 cloudbees에 대한 단위 테스트를 수행하지 못했습니다.
- 28. IDEA + Gradle + Android로 단위 테스트를 실행하는 방법
- 29. 단위 테스트가 실행되는 동안 무슨 일이 일어나는지 보여 주시겠습니까? 내 단위 테스트를 코딩하고 따라
- 30. 이 단위 테스트를 제대로하고 있습니까?
멋진 솔루션처럼 보이지만 JUnit 4를 Android와 함께 사용하려면 어떻게해야합니까? –
Junit 버전이 없으면 문제가 없다고 생각합니다. 궁극적으로 테스트 러너를 변경했을 것입니다. 어떤 버전을 사용하고 있습니까? – Enrichman
JUnit 3.8이라고 생각합니다. Android 테스트 도구는 JUnit 4를 지원하지 않습니다. http://developer.android.com/tools/testing/testing_android.html –