Test çalıştırıcısı 'JUnit 4' ile hiçbir test bulunamadı


105

Java testim Eclipse'de iyi çalıştı. Ama şimdi testi çalıştır menüsünden yeniden başlattığımda şu mesajı alıyorum:

No tests found with test runner 'JUnit 4'

Gelen .classpathdosyanın Ben hepsine sahip jardosyalar ve sonunda vardır:

<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

Bu hatayı nasıl çözebilirim ve testleri tekrar çalıştırabilirim?


1
Testinizin içeriğini (veya en azından sınıf beyanını) gönderebilir misiniz? Ayrıca başka hiçbir şey olmadan "sonunda sahip:" yazdınız.
phtrivier


İçin JUnit 5 bkz burada
Anand Rockzz

Yanıtlar:


156

bu benim başıma geldi. Eclipse'i yeniden oluşturmak veya yeniden başlatmak yardımcı olmadı.

"Test ..." (JUnit3 stili) ile başlamak için test yöntemlerinden birini yeniden adlandırarak çözdüm ve sonra tüm testler bulundu. Daha önce olduğu gibi yeniden adlandırdım ve hala çalışıyor.


7
Testle testQuotesbaşlamayan diğer yöntemlerle birlikte bir yöntemim var ama yine de Test bulunamadı hatası alıyorum
Rachel

1
Genişleyen bir sınıfla aynı sorunu yaşadım junit.framework.TestCaseve yöntemlerimin "test" ile başlaması gerekiyordu. Genişletmek yerine TestCase, bir içe aktarma ekledim: import static org.junit.Assert.*;ve yöntemlerimi istediğim gibi adlandırabilirim. Tuhaf ...
MrDrews

6
Cidden, bir teste @Test ile açıklama eklense bile, test fonksiyonu adının hala "test" ile ön eklenmesi gerekiyor mu?
Brian Shotola

4
2015 ve Eclipse Luna'yı da bu listeye ekleyebilirsiniz. Aslında @Test yöntemlerimin çoğu hala "test" ön ekiyle başlıyor. Ben kaldırıldı , bir test bu önek kurtardı ve sonra tüm testler bulundu. Daha sonra tekrar ekledim ve tüm testler bulunmaya devam etti. Görünüşe göre daha çok bir yöntemi (dosya?) Eclipse'in her şeyi yeniden keşfedeceği şekilde değiştirmekle ilgili.
Brian White

2
Android Studio 2.1.1, Mayıs 2016, hala çalışıyor. Acaba bu cevap evrenin sonuna kadar işe yarayacak mı?
Blueriver

42

Bu hataları aldığımızda Eclipse'in kafası karışmış gibi görünüyor. Eclipse'i yeniden başlatın, projeyi yenileyin, temizleyin, Eclipse'in yeniden oluşturmasına izin verin ve tekrar deneyin. Çoğu zaman bu bir cazibe gibi çalışır.


1
Evet benim için de çalıştı ve dlamblin'e katılıyorum. Hazırlamanın ilk 5 dakikasında çözülemeyen herhangi bir garip problem için her zaman yeniden başlatmayı denemeniz için iyi bir hatırlatma.
Thien

3
Bu sorunu yaşadım ve test sınıfımı tanımladığım kaynak dosyayı kapattım, gezginde o dosyaya çift tıkladım ve işe yaradı. Böylece Eclipse'i yeniden başlatmadan dosyayı kapatıp yeniden açmak işe yaradı.
metamatt

11
bu gerçekten yeni bir IDE aramama neden oluyor. bu benim için çalıştı.
Seth M.

1
projeyi kapatıp yeniden açmak benim için sorunu çözdü!
Martin Charlesworth

34

'Test' dizininizin bağlam menüsünde 'Oluşturma yolu' -> 'Kaynak klasör olarak kullan'ı seçin. Eclipse, unitTests.java dosyalarınızı kaynak dosyalar olarak görmelidir. 'Build' dizininizde unitTests.class dosyası bulunmadığından 'JUnit testi bulunamadı' uyarısı oluşuyor


Benim için çalışan çözüm bu. Yeniden başlatma çalışmıyor.
André,

"Src" klasöründe olmayan "test" klasörüne sahip olmam gerektiğinden, peşinde olduğum şey buydu. Bunu yaptım, sonra diğer cevapların önerdiği şekilde projeyi açıp kapattım ve şimdi JUnit testi olarak derleyip çalışıyor. Teşekkürler!
quux00

Ben de aynı şeyi proje -> Java oluşturma yolu -> Kaynak -> test klasörünü seçerek yaptım. Çok teşekkürler!
Peter Clause

Src / test / groovy zaten bir kaynak klasör olarak derleme yolunuzdaysa, onu kaldırın ve sonra tekrar ekleyin. Her test dosyasında @Test'i kaldırıp değiştirmekten daha kolay ...
geneSummons

32

Test sınıfınızın "TestCase" öğesini genişletip genişletmediğini kontrol edin. eğer öyleyse, bu maddeyi kaldırın. Sınıfınızın "TestCase" sınıfından uzatılmasına gerek yoktur. Karşılaştığım vakaların çoğu.

public class MyTestCase extends TestCase{
  @Test
  public void checkSomething() {
    //...
  }
}
//Result> AssertionFailedError: No test Found in MyTestCase

TestCase'i takip etmek iyi olmalı.

public class MyTestCase {
  @Test
  public void checkSomething() {
    //...
  }
}
//Works fine

Gerçekten doğru cevap bu. IntelliJ ve JUnit 4.1 ile test ettim ve çalışıyor!
Dio Phung

Karşılaştığım sorun şu ki, tutulma sırasında JUnit testlerim iyi çalışıyor, ancak onları bir JAR'a aktardığımda yukarıdaki hatayı alıyorum. Herhangi bir fikir?
tryToLearn

Bu günlerde tersi mi var? "TestCase'i genişletir" eklenmesi benim için sorunu çözdü.
Heinzlmaen

Benim için çalıştı !!! Teşekkürler
JRichardsz

27

Ben de aynı problemle karşı karşıyaydım ve bunu web'de ve junit'in iç kısımlarında kötü örneklere ayırdım. Temel olarak, Junit 4.x için bazı örneklerin gösterdiği gibi sınıfınızın TestCase'i genişletmesine izin vermeyin. Bazı adlandırma kurallarını kullanın Test veya bir açıklama almak istiyorsanız @RunWith (JUnit4.class) kullanabilirsiniz.

Assert yöntemlerine erişmeniz gerekiyorsa, Assert'i genişletin veya statik içe aktarmalar kullanın.

Sınıfınız TestCase'i genişletirse, Junit 4 Runner'ı kullansanız bile 3 olarak çalıştırılacaktır. Bunun nedeni, başlatma kodunda algılama olmasıdır:

JUnit3Builder ve satırlara bakın:

boolean isPre4Test(Class<?> testClass) {
    return junit.framework.TestCase.class.isAssignableFrom(testClass);
}

Bu true döndürür ve junit4 uyumluluğu testi denenmez.


2
Bu benim için sorunu çözdü. Önce Junit'in nasıl kullanılacağına dair eski örneklere bakarsanız, sizi yanlış yola götüreceklerdir.
Alex Kilpatrick

"Sınıfınız TestCase'i genişletirse, Junit 4 Runner'ı kullansanız bile 3 olarak çalıştırılacaktır" - bu doğru değildir (en azından Groovy ve Intellij IDEA için). JUnit 4.12 kullanıyorum ve sınıfa @RunWith(JUnit4)"GroovyTestCase" ile açıklama ekledim ve onu genişlettim. @RunWith(JUnit4)Ben olmadan aynı sorunlarla yüzleşirim.
Veaceslav Gaidarji

Davranış hala 2017 ile aynıdır (JUnit 4.12).
sharmaap

5

Eklemeyi Deneyin

@ Test için yöntemin üzerinde böyle bir test yapın

@Test
public void testParse()
{

}

5

Yine de halkaya atacağım başka bir olası çözüm: Test sınıfını ne düzenleyici penceresinden ne de Paket Gezgini'nden çalıştıramadım, ancak Anahat görünümünde sınıf adına sağ tıklayıp JUnit Olarak Çalıştır'ı seçerek Test işe yaradı ... Git şekil!


aynı, anahat görünümünden işe yarıyor, diğer her şey işe yaramıyor - 3 yığın taşma iş parçacığında yayınlanan her çözümü denedim, hiçbir şey işe
yaramıyor

Bu benim için de işe yarıyor, ancak bir proje genelinde kapsamı test etmek için faydasız.
zengin

4

JUnit4'te test kıyafeti yok. Bunun yerine ek açıklamaları kullanın veya eski JUnit3 ad kurallarını kullanın.

Misal:

@RunWith(Suite.class)
@SuiteClasses({YourClassWithTests.class})

4

Bu bana da oldu. Eclipse'i yeniden başlatmayı denedim ve ayrıca test yöntemlerime testler ekledim. Hiçbiri işe yaramadı.

Aşağıdaki adım işe yaradı: @BeforeClass ve @AfterClass'da bulunan tüm test yöntemlerinizi statik yöntemlere değiştirin.

Örneğin, aşağıdaki formatta test yönteminiz varsa:

@BeforeClass
public void testBeforeClass(){
}

sonra şu şekilde değiştirin:

@BeforeClass
public static void testBeforeClass(){
}

Bu benim için çalıştı.


4

Cevabı buldum:

Tutulmadan bağımsız olarak testi gerçekleştirdiğimde bu hatayı aldım (yönteme sağ tıklayın ve junit testi olarak çalıştırmayı seçin),

Tüm sınıfı junit test olarak çalıştırdığımda, test parametrelerle doğru bir şekilde yürütüldü.


3

Bu problemle karşılaştığımda sadece dosyayı düzenleyip kaydediyorum ... cazibe gibi çalışıyor


1
Merhaba dostum, Stackoverflow'a hoş geldiniz! :) Lütfen cevabınızı açıklar mısınız?
Littm

@Mahesh Dosyayı yenilemeyi kastediyorsunuz (seçin ve F5'e basın)
Cassian

Aynı problemle scala ile karşı karşıyayım, yani testlerim JUnit4 için yazılıyor ama ölçek dahilinde. Ve @ Mahesh'in önerdiği gibi çözüm, derleyiciye bir tekme vermektir. Dosyayı düzenlediğinizde ne yaptığınız önemli değil, sadece düzenlemeniz gerekir. Sözdizimi hatası veren bir şey yazıyorum, dosyayı kaydediyorum, sonra geri alıyorum ve tekrar kaydediyorum. Aniden testlerim çalışıyor. Bu sık sık başıma geliyor, yani en azından her gün, genellikle günde birkaç kez.
Erick G. Hagstrom

3

Benim sorunum, beyannamenin import org.junit.Test;ortadan kalkması (veya eklenmemesiydi?). importEkledikten sonra, başka bir bildirimi kaldırmak zorunda kaldım (Eclipse hangisi olduğunu size söyleyecektir) ve her şey yeniden çalışmaya başladı.


3

Çok geç ama benim için problemi çözen şey, test metodu adlarının hepsinin büyük harflerle başlamasıydı: "public void Test". Küçük harf t yapmak işe yaradı.


bu benim için işe yarıyor ... ama bu garip bir şekilde kafa karıştırıcı bir çözüm
Anchit Mittal

2

Çözümü Germán'dan denedim. Sınıfımdaki tüm yöntemler için çalıştı ancak projemde çok sayıda dersim var.

Bu yüzden, yapı yolundan kaldırmayı ve ardından yeniden eklemeyi denedim. Mükemmel çalıştı.

Umarım yardımcı olur.


2

Altı yıl sonra ... ve hala Eclipse ile ilgili sorunlar var ve bazen JUnit'leri bulamama.

Eclipse Mars 2'mde @Test, dosyada 9 veya 10'dan fazla açıklama varsa, git'ten alınan test sınıflarını tanımayacağını keşfettim . Herhangi bir ekstra testi yorumlamam, test sınıfını çalıştırmam, ardından bunları açıklamam ve sınıfı yeniden çalıştırmam gerekiyor. Şekle bak ...


Buradaki cevap yararlıdır, tam olarak aynı duruma sahip değildim, ancak test yöntemlerinin adları oldukça benzerdi ve tutulma onları bulmakta sorun yaşadı. TestCase01, testCare02 gibi ... testCase01'i çalıştırmak için diğer "testCasexx" yöntemlerini yorumlamak zorunda kaldım, yoksa bir istisna attı. Tüm test yöntemlerini PUBLIC yapmak bu sorunu çözmüş gibi görünüyor !!
01000001

1

JUnit başlatma yapılandırmanız bireysel bir test sınıfı içindi ve bu yapılandırmayı bir şekilde "bir kaynak klasör, paket veya projedeki tüm testleri çalıştır" olarak değiştirdiniz

Ancak bu, "Test çalıştırıcısı 'JUnit 4' ile test bulunamadı" hata mesajını tetikleyebilir.

Veya test sınıfınızda @Testek açıklamayı kaldırarak bir değişiklik yaptınız .
Bu wiki sayfasına bakın .


@Test burada, mesaj: ana sınıf toto.lolo.testrunner (çalıştırma yapılandırmasında belirtilmiştir)
user281070

@lamisse: Yani, bir tür sınıf yolu sorunu mu? veya bir sözdizimi sorunu: olmalı toto.lolo.Testrunnerve olmamalı toto.lolo.testrunner('T')
VonC

@lamisse: "toto.lolo.Testrunner" TestRunner sınıfınızın gerçek adı mı? Yazdığınız bir şey mi? Proje / jar onu başlatma yapılandırmanızın sınıf yolunda mı içeriyor?
phtrivier

1

JUnit testini çalıştırırken de aynı sorunla karşılaştım. Bunu, @Test ek açıklamasını ana test işlevinin hemen üstüne koyarak çözdüm.


1

Durumumu düzelten şey @ JamesG'nin cevabına benziyordu: Eclipse'i yeniden başlattım, projeyi yeniden oluşturdum ve yeniledim; AMA bunlardan herhangi birini yapmadan önce, projeyi kapattım (paket gezginde projeye sağ tıklayın -> Projeyi Kapat) ve sonra yeniden açtım. Sonra çalıştı.

Az önce anlattığım nihai çözümü bulmadan önce bulduğum geçici bir çözüm: Test sınıfını kopyalayın ve test sınıfını JUnit olarak çalıştırın.


1

Testlerinizin bulunduğu klasörün bir kaynak klasör olup olmadığını kontrol edin. Değilse - sağ tıklayın ve kaynak klasör olarak kullanın.



1

Başka bir şans daha var, Junit Test'i daha düşük sürümden (örneğin Junit 3) Junit 4'e değiştirmiş olabilirsiniz. Öyleyse aşağıdaki adımları izleyin: -

1. Right Click on class
2. Select Run as >> "Run Configurations"
3. Check your "Test Runner" option in new window
4. If it not same as maven change it for example change it as Junit 4.

1

Testinizin @Testüstüne ekleyin .
Fare imleci açıklamanın üzerine getirin.
'Sınıf yoluna junit 4 kitaplığı ekle' seçeneğini seçin


0

Eclipse projeniz temelli mi? Öyleyse, m2eclipse sürümünü güncellemeniz gerekebilir.

Kısa bir not: Eclipse'de maven tabanlı ve başlangıçta Eclipse'deki "yeni maven projesi" sihirbazı kullanılarak oluşturulmuş bir projem var. Birim testleri için JUnit 4.5 kullanıyorum ve maven kullanarak komut satırından testleri ve JUnit testi olarak çalıştır kullanarak Eclipse'den bireysel testleri mutlu bir şekilde çalıştırabilirim ... Ancak, tüm testleri çalıştırmayı denediğimde Eclipse, projede JUnit testi olarak çalıştır ... proje kök düğümünde çalıştırılarak, " test çalıştırıcısı junit 4 ile test bulunamadı " diye şikayet etti . M2eclipse'i m2eclipse güncelleme sitesinden en son kararlı geliştirme yapısına yükselterek çözüldü (özellikle, Eclipse Galileo'da 0.9.8.200905041414 sürümünden 0.9.9.200907201116 sürümüne yükselttim).

Buradan: http://nuin.blogspot.com/2009/07/m2eclipse-and-junit4-no-tests-found.html


Anlamıyorum, eclispe sürümüyle ilgili olduğunu sanmıyorum, testim dün çalıştı ve şu anda Junit başlatma açılır penceresi nedeniyle durum böyle değil, ilk yapılandırmamı yeniden ayarlamanın bir yolu var mı?
user281070

Lamisse, ben de kafam karıştı. Birim test çalıştırmasının ne zaman çalıştığını ve ne zaman çalışmadığını açıklamak için sorunuzu güncellemenizi öneririm.
b.roth

0

Bu bana da oldu. Eclipse'de yeni bir Java Class dosyası oluşturmadığımı ve bu yüzden derlemediğimi buldum. Kodunuzu zaten yoksa bir java sınıfı dosyasına kopyalamayı deneyin ve ardından derleyin.


0

Eclipse'in yalnızca JUnit 3 stil testleri gerçekleştirdiğini öğrendim, test sınıfınız şu tarihten itibaren genişliyorsa TestCase . Mirası kaldırırsanız, ek açıklamalar benim için çalıştı.

assert*Gibi gerekli tüm yöntemleri statik olarak içe aktarmanız gerektiğine dikkat edin import static org.junit.Assert.*.


0

Komut satırında mvn temizliği yapmam ve ardından tutulmada proje-> temizlemem gerekiyordu. Sınıfı önceden yeniden adlandırdım, sonra yeniden adlandırdım ancak bunun yardımcı olduğundan şüpheliyim.


0

Eclipse'i Maven (m2e 1.4) ile de çalıştırıyorum. Testler Maven ile çalışıyordu, ancak Eclipse ile değil ...Maven>Update project .

Benim çözümüm m2e tarafından oluşturulan .class yoluna bazı satırlar eklemekti. Çizgiler şimdi yapışıyor.

<classpathentry kind="src" output="target/test-classes" path="src/test/java">
  <attributes>
    <attribute name="optional" value="true"/>
    <attribute name="maven.pomderived" value="true"/>
  </attributes>
</classpathentry>

0

Zaman zaman bu sorunu yaşıyorum. Benim için en çok sorunu çözen şey, JUnit testini Çalıştır yapılandırmalarından çalıştırmak ... JUnit 4'ün test çalıştırıcısı olarak ayarlandığından emin olmak.

Genel olarak, Paket Gezgini'ndeki bağlam menüsünden Farklı Çalıştır ... Junit testi yapmaya çalışırken bu sorunu görüyorum. Çalıştırmaya çalıştığınız testin kodunu sağ tıklarsanız ve Farklı Çalıştır ... Junit Test'i seçmek yerine Konfigürasyonları çalıştır'ı seçersiniz ... Proje, Test Sınıfı ve test çalıştırıcısının doğru şekilde ayarlandığından emin olun, uygula'yı tıklayın ve ardından çalıştırın benim için her zaman çalışıyor.


0

İşimde Selenium ve Eclipse ile çalışmaya başladım ve ilk otomatik testimi yapıyordum ve @Before, @Test ve @After notlarından sildim ve şu sorunu yaşıyordum "Test çalıştırıcısı junit4 ile test bulunamadı" .

Benim çözümüm, @Before, @Test ve @After notlarını tekrar eklemekti ve bununla betiğim çalıştı. Bunu koddan silmemek önemlidir.

Bu, Google'ı bir şey aramak için kullanan basit bir testtir:

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;

import org.junit.*;

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

public class TestingClass {

    private WebDriver driver;
    //Creates an instance of the FirefoxDriver
    **@Before**
    public void SetUp() throws Exception {
        driver = new FirefoxDriver();
    }

    **@Test**   
    //Search using keyword through Google Search
    public void TestTestClass2 () throws Exception {
        driver.get("http://www.google.com.mx/");
        driver.findElement(By.name("q")).sendKeys("selenium");
        Thread.sleep(10000);
        driver.findElement(By.name("btnG")).click();
        Thread.sleep(10000);
    }

    //Kill all the WebDriver instances
    **@After**
    public void TearDown() throws Exception {
        driver.quit();
    }

}

0

ScalaIDE'yi kullanma (3.0.4-2.11-20140723-2253-Typesafe) Right Click Scala Test Class-> Run As -> Scala Junit Testbağlam menüsünde benzer bir sorun yaşıyordum .

Sınıfı düzenlemeyi (ancak bir derleme hatası için değil), temizlemeyi, projeyi kapatmayı, Eclipse'i kapatmayı denedim. Bunların hiçbiri, daha önce iyi çalışan sınıflar için bağlam menüsünü geri yüklemek için çalışmadı. Test sınıfları @Testaçıklamayı kullanmaz ve bunun yerine @RunWith(classOf[JUnitRunner])ScalaTest kodunu kullanarak sınıfın en üstündeki açıklamayı kullanır.

Seçmeye çalıştığımda Scala Junit TestDoğrudan Çalıştırma Yapılandırması başlatma düzenleyicisinden , sorudan iletişim kutusunu aldım. Footix29'un cevabı benim için anahtardı.

Projemi birkaç kez temizlememe rağmen, / bin dizinindeki sınıflarımın aslında bir süredir yeniden oluşturulmadığını fark ettim.

İçerik menüsünü şu şekilde geri aldım ve bir kez daha Scala Junit Tests'yi çalıştırabildim :

  • manually/bin/<package dir>*Explorer aracılığıyla silerek sınıfları temizledi
  • Project -> Cleanprojeyi tam bir yeniden inşa ile birlikte

Genel olarak bir sınıf düzenlemesinin, Eclipse'in kaydedilmiş bazı durumlarını temizleyebileceğinden ve onu tekrar çalıştırabileceğinden şüpheleniyorum. Benim durumumda, daha önce denediğim tüm çalışan sınıflar başarısız oldu,manual temiz adım sadece ihtiyacım olan çekiçti. Ancak, Eclipse'in sınıf yolu / yapı durumu kavramını etkileyen diğer hileler de çalışmalıdır.

Ayrıca, bu davranışın bir Scala sınıfını yeniden adlandırarak (Scala Eclipse IDE'nin emdiği) yeniden düzenlemeye çalışarak tetiklendiğini düşünüyorum, burada ilk dosya değişikliğinden sonraki tüm temizlik manueldir. Derleme hatası yoktu, ancak Eclipse'in derleme durumu bilgilerinde kesinlikle bir şeyin sıkışmış olduğu anlamına gelen herhangi bir uyarı da yoktu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.