2011-02-18 18 views
6

ActivityInstrumentationTestCase2'u genişleten bir android uygulaması için test defterleri yazıyorum.Android test sınıfı, "bağlı uyumsuzluk" hatasıyla tutulmayı derlemekte başarısız oluyor

tutulma esnasında
public class SolutionEntryActivityTest extends ActivityInstrumentationTestCase2<SolutionEntryActivity> { 

    public SolutionEntryActivityTest() { 

     super(SolutionEntryActivity.class); 
    } 
} 

, bu kod hatası ile derlenmeyecektir: Test sınıfı şöyle Bound mismatch: The type SolutionEntryActivity is not a valid substitute for the bounded parameter <T extends Activity> of the type ActivityInstrumentationTestCase2<T>

Ama SolutionEntryActivity gerçekten android.app.Activity olduğunu, tip hiyerarşi şu şekildedir:

Activity 
    OrmLiteBaseActivity<H> (abstract) 
     KabowieActivity 
      PracticeActivity (abstract) 
       SolutionEntryActivity 

2004 ve 2005'dan gelen iki tutulma hatasını benzer bir sorunla karşılaşıyormuş gibi görüyorum ancak bunlar uzun bir süre sabitlenmelidir.

Android 2.2 ve Sun Java 1.6 ile Eclipse Helios kullanıyorum.

Neler olduğu hakkında bir fikrin var mı?

cevap

5

Sorun, android tutulması projesiyle bir test projesi oluşturduğunuzda, test edilecek projeden dış kütüphanelere yapılan referansların otomatik olarak çözülmediğiydi. OrmLiteBaseActivity sınıfı (orijinal sorudaki tip hiyerarşisine bakın), test edilen projenin yapım yolunda bulunan harici bir kavanozdan gelir. Bu dış kavanozun, test projesinin yapım yoluna açıkça dahil edilmesi gerekmektedir. Bunun bir hata olarak kabul edilip edilemeyeceği ve eğer öyleyse, nerede olduğu konusunda emin değilim. Ancak orijinal proje tarafından kullanılan tüm kitaplıkların da test projesinde kullanılabilir olmasını beklerdim. Neyse, soruyu okuyanlara teşekkürler.

DÜZENLEME Düzeltme: JUnit de gerçekten aynı kütüphane olduğunu anlamak değil çünkü çalışmıyor (TestProject kez test edilen projenin birine kez ve) iki kez buildpath aynı kütüphane ekleyerek . Derleme başarılı olacak ancak LogCat SolutionEntryActivity üst sınıflarının farklı kaynaklardan olduğunu belirten bir hata mesajı verecektir. Buradaki çözüm, test projesinin yapı yoluna doğrudan eklemek yerine orijinal projeden harici lib'leri (Yapılandırmayı Yapılandır -> Sipariş ver ve dışa aktar -> ihraç edilecek lib'leri seç) dışa aktarmaktır.

İlgili konular