2011-10-17 14 views
7

Junit testlerini başka bir donanımda çalışan bir Junit sunucusuna soket bağlantısı üzerinden gönderen özel bir koşum var. Bana nedenKoşu Junit'ten Ant'a özel sınıf koşucusu kullanmıyor gibi görünüyor

<target name="run"> 
    <delete dir="reports" failonerror="false" />   
    <!-- Make the reports directory --> 
    <mkdir dir="reports" /> 

    <!-- Execute the tests and saves the results to XML --> 
    <junit fork="yes" printsummary="no" haltonfailure="no"> 
     <batchtest fork="yes" todir="${JunitReport.dir}"> 
      <fileset dir="${APITesting.classes}"> 
       <include name="test/api/**/*Test.class" /> 
      </fileset> 
     </batchtest> 
     <formatter type="xml" /> 
     <classpath refid="mastersuite.classpath" /> 
    </junit> 

    <!-- Compile the resulting XML file into an HTML based report. --> 
    <junitreport todir="${JunitReport.dir}"> 
     <fileset dir="${JunitReport.dir}"> 
      <include name="TEST-*.xml" /> 
     </fileset> 
     <report todir="${JunitReport.dir}" /> 
    </junitreport> 
</target> 

şey donanıma üzerine sevk alır aşağıdaki <batchtest> eleman eklemek Ancak

<target name="run"> 
     <mkdir dir="reports" /> 
     <junit fork="yes" haltonfailure="no"> 
      <test name="${CurrentTest}" /> 
      <formatter type="xml" /> 
      <classpath refid="mastersuite.classpath" /> 
     </junit> 

     <junitreport todir="${JunitReport.dir}"> 
      <fileset dir="."> 
       <include name="TEST-*.xml" />   
      </fileset> 
      <report todir="${JunitReport.dir}" /> 
     </junitreport> 
    </target> 

, ...,: Aşağıdaki hedef ile amaçlanan olarak çalışacak testler @RunWith (com.company.name.RemoteTestCaseRunner.class) ek açıklamasının <batchtest> bağlamında onurlandırılmamasına inanmak. Yapmayı unuttuğum bir şey var mı, yoksa belki de @RunWith ek açıklama için ek olarak yapılmalı mı?

Testler hala devam ediyor ve raporlar oluşturuluyor ve platform bağımlı olmayan bazı testler, hedef donanımdaki servislerle iletişim kurmayı gerektirmeyenleri çalıştırıyor ve geçiyor.

GÜNCELLEME Ben @SuiteClasses ile eşleştirilmiş @RunWith (Suite.class) kullanırken bu çalışıyor olduğunu tespit ettik ({}), sadece açıkça bunu bir test vakası vermek değilse. Yani şimdi sorunun nerede yattığından emin değilim.

Bu konuda birşey katı bulamadı iken GÜNCELLEME, benim testlerin davranış ima görünmektedir aşağıdaki: my testler biçimlendirilir şekilde (bunlar TestCase uzatmak) Ben Ant benim test durumları yürütme düşünüyorum dayalı Junit3 testleri gibi. Yukarıda belirtildiği gibi, Junit4 için biçimlendirilmiş bir test paketini çalıştırdığımda (sadece ek açıklamaları kullanarak) testlerim çalışır ve amaçlandığı gibi yürütülür. Görünüşe göre Junit3 biçimlendirilmiş test vakasını geçtiğimde, ek açıklamalarımın onurlandırılmaması, Junit3 koşucusunun kullanıldığını gösterir.

Yeni sorum şu: Karıncaya 4 numaralı koşucuyu kullanmaya açıkça söylemek için bir yol var mı?

cevap

7

Test çantanız Junit4TestAdapter kullanıyorsa, Ant'in otomatik olarak hangi koşucunun kullanılacağını çözdüğü anlaşılıyor. Ben benim test durumların hepsinde için aşağıdaki yöntemi eklemek zorunda sona erdi:

public class MyTestCase extends TestCase 
    public static junit.framework.Test suite() { 
     return new JUnit4TestAdapter(MyTestCase.class); 
    } 
    ... 
} 

Çoğunuz muhtemelen TestCase uzatmak gerekmez, ancak Junit4 bir istemci olarak davranmaktadır, çünkü benim durumumda bu gereklidir Junit3 sunucusu.

+2

Cevabınız için size +100 vermeliyim. Aramanın 2 gün sonra, bu benim sorunu çözmek için görünüyor! Orijinal gönderim http://stackoverflow.com/q/26848673/668650. –

+0

@KevinRave burada aynı! Aslında, Sorunumu artık TestCase'i uzatarak düzeltebildim, ancak burada bilgi olmadan bunu düşünmemiştim. – OpenSauce

+0

Bu kişiye yardım ettiğine sevindim! –

İlgili konular