Belirli Android SDK sürümleri için deneme testlerini yok saymak için bir ek açıklama veya başka kullanışlı bir yol var mı? Lint ek açıklama TargetApi (x) ile benzer bir şey var mı? Veya Build.VERSION kullanarak testi çalıştırıp çalıştırmadığımı kontrol etmek zorunda mıyım?SDK düzeyine bağlı olarak Android birim testlerini göz ardı etme
cevap
Hazır bir şey olduğunu düşünmüyorum ama bunun için özel bir açıklama oluşturmak oldukça kolay.
Testlerinizi Test koşucu Ovverride özel açıklama
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TargetApi {
int value();
}
(yani testi değerini kontrol ve sonunda görmezden/ateş edeceği)
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);
}
}
}
oluşturun ve işaretlemek
@RunWith(ConditionalTestRunner.class)
public class TestClass {
@Test
@TargetApi(6)
public void testMethodThatRunsConditionally() {
System.out.print("Test me!");
}
}
Sadece test ettim, benim için çalışıyor. :)
Kredi için: Conditionally ignoring JUnit tests
Ben bu soruya cevap arayan ettik ve sürümünü kontrol etmek daha iyi bir yol bulamadı. Aşağıdaki mantıksal olarak, aşağıdaki Android TestCase
yöntemlerine bir denetim koyarak test mantığının yürütülmesini bastırmayı başardı. Ancak, bu aslında bireysel testlerin yürütülmesini engellemez. Bu gibi runTest()
yöntemini geçersiz kılmak, işe yaramayacağını bildiğiniz API düzeylerinde "geçiş" yapılmasına neden olur. Test mantığınıza bağlı olarak, tearDown()
'u da geçersiz kılmak isteyebilirsiniz. Belki birisi daha iyi bir çözüm sunacaktır.
@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. JMeter'deki hataları göz ardı etme
- 2. Android'deki dosyaları göz ardı etme APK
- 3. ICS'nin font boyutu ayarını göz ardı etme
- 4. .ackrc'de alt dizinleri göz ardı etme
- 5. Git: tersini göz ardı etme (.gitignore)
- 6. Deserialization sırasında bir özelliği göz ardı etme
- 7. CardView android göz ardı ediliyor: clipChildren = "false"
- 8. Android ndk-build göz ardı APP_ABI: = x86
- 9. DebuggerStepBu göz ardı ediliyor
- 10. TortoiseGit'in TortoiseSVN'nin global göz ardı etme düzenine eşdeğer
- 11. Nasıl asp.net formları rotayı göz ardı etme URL yönlendirme
- 12. JAXB unmarshaling SOAP Zarf/Üstbilgi etiketlerini göz ardı etme
- 13. Char göz ardı etme durumunun karşılaştırılmasının doğru yolu nedir?
- 14. Python: Tarfile kullanarak ayıkla ama dizinleri göz ardı etme
- 15. Console.Read göz ardı ediliyor
- 16. Laravel, veritabanı bağlantısı testini göz ardı eder
- 17. .gitignore dizini göz ardı etmeyecek
- 18. Automapper'ın durumu göz ardı edilir
- 19. Windows kullanıcı erişim düzeyine bağlı olarak WPF uygulama davranışı
- 20. svn: xcuserdata göz ardı yoksayma
- 21. İsteğe bağlı olarak nasıl göz atılır?
- 22. Android stüdyosunda Android SDK kaynaklarına göz gezdirme 2.0
- 23. Android: Nasıl savedInstanceState göz ardı veya devre dışı bırakmak için?
- 24. Android dataBinding - @BindingAdapter özel uygulama ad alanı göz ardı ediliyor
- 25. Genel .gitignore göz ardı edebilir miyim?
- 26. C - sscanf beyaz alanı göz ardı etmiyor
- 27. Merkürde birleştirme yaparken boşlukları göz ardı et
- 28. Run Junit @Test göz ardı @T Öncesi/@
- 29. Bir üst sınıfı nasıl göz ardı edebilirim?
- 30. Birim testlerini çalıştırırken Garip. Net 4.0 istisnası
Güzel bir çözüm gibi görünüyor ama JUnit 4'ün Android ile çalışmasını nasıl sağlıyorsunuz? –
Hiçbir Junit sürümü olmadan herhangi bir problem olduğunu sanmıyorum, sanırım sonunda test koşucusunu değiştirdiniz. Kullandığınız sürüm hangisidir? – Enrichman
Sanırım JUnit 3.8. Android test araçları JUnit 4'ü desteklememektedir: http://developer.android.com/tools/testing/testing_android.html –