2012-08-28 39 views
10

Bu, testng.xml'deki sınıfları hariç tutmak mümkün mü? TestNG'de sınıf nasıl hariç tutulur?

Ben

<packages> 
    <package exclude="com.tt.ee"/> 
</packages> 

ile denedik ama hatayı veriyor.

+1

cevap burada - http://stackoverflow.com/questions/6209177/how-to-disable-entire-unit-test-in-testng –

+0

@JayBose Hariç devre dışı bırakılması ile aynı değildir. Test dışlandığında, yine de farklı bir konfigürasyonda yürütülebilir. Herhangi bir yapılandırma için devre dışı bırakılmış test yürütülmez. – artdanil

cevap

6

Şöyle çalışması gerekir:

<packages> 
    <package name="packageName"> 
     <exclude name="packageYouWantToExclude"></exclude> 
    </package> 
</packages> 
+0

her iki 'name' özniteliğinde – user522170

+0

paket adını vermem gerekiyorsa, çalıştırmak istediğiniz paketi ve çalıştırmak istemediğinizi vermeniz gerekir. – Tarken

7

TestNG dtd göre, exclude eleman aşağıdaki unsurları için geçerlidir:

  • paketi - paketler liste içinde paket açıklaması.
  • yöntemleri - Bu sınama dahil/hariç tutulan yöntemlerin listesi.
  • run - Hangi grupların çalıştırılacağını tanımlamak için kullanılan grupların alt etiketi.

classes ve class öğeleri doğrudan dışarıda bırakılamaz; ancak, gruplar yoluyla sınıfları hariç tutabilirsiniz:

@Test(groups = { "ClassTest1" }) 
public class Test1 { 

    public void testMethod1() { 
    } 

    public void testMethod2() { 
    } 

} 

Sonra testng.xml tanımlayacaktır: koşuya dahil etmek sınıflar tanımlamak çoğu durumda,

<suite> 
    <test> 
    <groups> 
     <run> 
     <exclude name="ClassTest1"/> 
     </run> 
    </groups> 
    <classes> 
     <class name="Test1"> 
    </classes> 
    </test> 
</suite> 

, dışlamak değil Yani sadece çalıştırmak istediğiniz sınıfları ekleyin.

0

Testng'yi testng.xml olsa da atlamak için doğrudan bir yol yoktur. Bununla birlikte, belirli test sınıfını görmezden gelmek için kullanılabilecek bir geçici çözüm vardır.

  1. Test sınıfını özet olarak belirtin.
  2. IAnnotationTransformer dinleyici arabirimini uygulayın ve özel ek klasörlerinizle işaretli belirli bir sınıfa ait tüm test yöntemlerine etkin = false değerini ayarlayın.

TestNG kullanıcı grubunda tartışılan aynı konu ama doğrudan cevap posta parçacığı bakın - Re: [TestNG-kullanıcılar] Sen classfilesetref kullanmak ve sınıfların listesini tanımlamak olabilir

1

TestNG bir sınıf Ignore koşmak istiyorsun.

<fileset id="test.classes" dir="${test.classes.dir}" casesensitive="yes"> 
    <exclude name="**/ExcludeClass.java" /> 
</fileset> 

<testng [...]> 
    <!-- your setting here --> 
    <classfilesetref refid="test.classes"/> 
</testng> 
1

doğru çalıştırmak istemiyorum testlerden sonra (groups = { "anyName"}) Ekle, bu yüzden şöyle görünür:

@Test(groups = { "group1"}) 
public void methodTestName(){.. 
} 

Ve xml dosyasında daha eklemek hemen sonra test name="..."

<groups> 
     <run> 
      <exclude name="group1" /> 
     </run> 
    </groups> 

(groups = { "group1"}) ile yöntemler çalıştırılamaz. Bu yol benim için çalışıyor. 'un Sınıfı hariç tutabildiğini, yalnızca paketi, yöntemleri ve'un çalıştığını unutmayın. İyi şanslar

1

Aynı sorunu yaşadım!Bu durumda

<classes> 
     <class name="brms.impl.BrmsServicesFactoryTest" /> 
<!--   <class name="brms.impl.ServicesFactoryTest" /> --> 
    </classes> 

, BrmsServicesFactoryTest testler yürütür tek sınıf, diğer sınıf testleri yürütülmez: Neyse, ben buldum çözüm paketlerinin yerine etiket sınıflarını kullanan bu benim testng.xml dosyasıdır!

Umarım bu size yardımcı olabilir!

0

Çözüm olarak, adı ile her test için sahte grupları ekleyebilirsiniz, açıklama transformatör üzerinden

public class TestNGAnnotationTransformer implements IAnnotationTransformer { 

@Override 
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { 
    if (testMethod == null || annotation == null) { 
     return; 
    } 

    String pseudoGroupClass = testMethod.getDeclaringClass().getSimpleName(); 
    String pseudoGroupMethod = pseudoGroupClass + "." + testMethod.getName(); 

    String[] existingGroups = annotation.getGroups(); 
    String[] extendedGroups; 
    if (existingGroups == null) { 
     extendedGroups = new String[] { pseudoGroupClass, pseudoGroupMethod }; 
    } else { 
     List<String> tmp = new ArrayList<String>(); 
     for (String group : existingGroups) { 
      tmp.add(group); 
     } 
     tmp.add(pseudoGroupClass); 
     tmp.add(pseudoGroupMethod); 
     extendedGroups = tmp.toArray(new String[0]); 
    } 

    annotation.setGroups(extendedGroups); 
} 

}

test yöntemini veya test sınıfını eşittir ve testng.xml kullanmak

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 

<suite name="My tests"> 
    <test name="tests" enabled="true"> 
     <groups> 
      <run> 
       <include name="My Group"/> 
       <include name="MySuperClass"/> 
       <exclude name="MySuperClass.badMethod"/> 
       <exclude name="DontLikeThisClassAnymore"/> 
      </run> 
     </groups> 

     <packages> 
      <package name="com.mycompany.*"/> 
     </packages> 
    </test> 

    <listeners> 
     <listener class-name="com.mycompany.TestNGAnnotationTransformer"/> 
    </listeners> 
</suite> 
İlgili konular