Tidak ada pengujian yang ditemukan dengan pelari pengujian 'JUnit 4'

105

Tes Java saya bekerja dengan baik dari Eclipse. Tapi sekarang, ketika saya meluncurkan kembali tes dari menu run, saya mendapatkan pesan berikut:

No tests found with test runner 'JUnit 4'

Di .classpathfile saya memiliki semua jarfile, dan pada akhirnya memiliki:

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

Bagaimana cara mengatasi kesalahan ini dan menjalankan pengujian kembali?

pengguna281070
sumber
1
Bisakah Anda memposting konten tes Anda (atau setidaknya deklarasi kelas). Juga Anda menulis "pada akhirnya memiliki:" dengan tidak ada yang lain.
phtrivier
periksa yang ini .. itu akan membantu stackoverflow.com/questions/22469480/junit-no-tests-found
prasad vsv
Untuk junit 5 lihat di sini
Anand Rockzz

Jawaban:

156

ini baru saja terjadi pada saya. Membangun kembali atau memulai ulang Eclipse tidak membantu.

Saya menyelesaikannya dengan mengganti nama salah satu metode pengujian untuk memulai dengan "test ..." (gaya JUnit3) dan kemudian semua pengujian ditemukan. Saya mengganti namanya kembali seperti sebelumnya, dan masih berfungsi.

Jerman
sumber
7
Saya memiliki metode seperti testQuotesbersama dengan metode lain yang tidak dimulai dengan tes tetapi masih saya tidak mendapatkan kesalahan Tes tidak ditemukan
Rachel
1
Saya memiliki masalah yang sama dengan kelas yang diperluas junit.framework.TestCase, dan metode saya harus dimulai dengan "tes". Alih-alih memperluas TestCase, saya menambahkan import:, import static org.junit.Assert.*;dan saya dapat memberi nama metode saya sesuai keinginan. Aneh ...
MrDrews
6
Serius, meskipun pengujian dianotasi dengan @Test, nama fungsi pengujian masih perlu diawali dengan "test"?
Brian Shotola
4
Anda juga dapat menambahkan 2015 dan Eclipse Luna ke daftar itu. Sebenarnya banyak sekali metode @Test saya yang masih dimulai dengan awalan "test". Saya menghapus awalan itu pada satu tes, disimpan, dan kemudian semua tes ditemukan. Setelah itu saya menambahkannya kembali dan semua tes terus ditemukan. Sepertinya ini lebih tentang mengubah metode (file?) Sehingga Eclipse menemukan kembali semuanya.
Brian White
2
Android Studio 2.1.1, Mei 2016, masih berfungsi. Saya bertanya-tanya apakah jawaban ini akan berhasil sampai akhir alam semesta.
Blueriver
42

Ketika kami mendapatkan kesalahan ini, sepertinya Eclipse hanya bingung. Mulai ulang Eclipse, segarkan proyek, bersihkan, biarkan Eclipse membangunnya kembali, dan coba lagi. Sering kali itu berfungsi seperti pesona.

JamesG
sumber
1
Ya bekerja untuk saya juga dan setuju dengan dlamblin. Pengingat yang baik untuk selalu mencoba memulai ulang untuk setiap masalah ganjil yang tidak dapat diselesaikan dalam 5 menit pertama dorongan.
Thien
3
Saya mengalami masalah ini, dan saya menutup file sumber tempat saya mendefinisikan kelas pengujian saya, mengklik dua kali file tersebut di navigator, dan berhasil. Jadi menutup dan membuka kembali file tersebut berhasil, tanpa memulai ulang Eclipse.
metamatt
11
ini benar-benar membuat saya ingin mencari IDE baru. ini berhasil untuk saya.
Seth M.
1
menutup dan membuka kembali proyek memperbaikinya untuk saya!
Martin Charlesworth
34

Dalam menu konteks direktori 'test' Anda, pilih 'Build path' -> 'Use as a source folder'. Eclipse akan melihat file unitTests.java Anda sebagai file sumber. Peringatan 'Tidak ada pengujian JUnit yang ditemukan' terjadi karena tidak ada file unitTests.class di direktori 'build' Anda

Dima
sumber
Ini adalah solusi yang berhasil untuk saya. Memulai ulang tidak berhasil.
Andree
Inilah yang saya kejar karena saya harus memiliki folder "test" bukan di folder "src". Saya melakukan ini, lalu membuka / menutup proyek seperti yang disarankan oleh jawaban lain dan sekarang mengkompilasi dan menjalankan tes JUnit. Terima kasih!
quux00
Saya melakukan hal yang sama dengan memilih proyek -> Java build path -> Source -> tambahkan folder uji. Terimakasih banyak!
Peter Clause
Jika src / test / groovy sudah ada di jalur build Anda sebagai folder sumber, hapus lalu tambahkan lagi. Lebih mudah daripada menghapus dan mengganti @Test di setiap file tes ...
geneSummons
32

Periksa apakah kelas pengujian Anda memperluas "TestCase". jika demikian, hapus klausul tersebut. Kelas Anda tidak perlu diturunkan dari kelas "TestCase". Itu sebagian besar kasus yang pernah saya temui.

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

Mengikuti TestCase seharusnya baik-baik saja.

public class MyTestCase {
  @Test
  public void checkSomething() {
    //...
  }
}
//Works fine
nephilim
sumber
Itu memang jawaban yang benar. Saya mengujinya dengan IntelliJ dan JUnit 4.1 dan berhasil!
Dio Phung
Masalah yang saya hadapi adalah, dalam gerhana tes JUnit saya berjalan dengan baik, tetapi ketika saya mengekspornya ke JAR, saya mendapatkan kesalahan di atas. Ada ide?
TryToLearn
Apakah hari-hari ini sebaliknya? Menambahkan "memperluas TestCase" memecahkan masalah bagi saya.
Heinzlmaen
Bekerja untuk saya !!! Terima kasih
JRichardsz
27

Saya menghadapi masalah yang sama dan saya men-debugnya ke contoh buruk di web dan internal junit. Pada dasarnya jangan membuat kelas Anda memperpanjang TestCase seperti yang ditunjukkan beberapa contoh untuk Junit 4.x. Gunakan beberapa Test konvensi penamaan atau jika Anda ingin memiliki anotasi, Anda dapat menggunakan @RunWith (JUnit4.class).

Jika Anda memerlukan akses ke metode assert, perluas Assert atau gunakan impor statis.

Jika kelas Anda memperluas TestCase maka meskipun Anda menggunakan Junit 4 Runner itu akan dijalankan sebagai 3. Ini karena dalam kode inisialisasi terdapat deteksi:

Lihat JUnit3Builder dan baris:

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

Ini mengembalikan nilai true dan pengujian kompatibilitas junit4 tidak akan dicoba.

toomasr
sumber
2
Ini memecahkan masalah saya. Jika Anda melihat contoh lama tentang cara menggunakan Junit terlebih dahulu, mereka akan menyesatkan Anda.
Alex Kilpatrick
"Jika kelas Anda memperluas TestCase, bahkan jika Anda menggunakan Junit 4 Runner, kelas akan dijalankan sebagai 3" - ini tidak benar (setidaknya untuk Groovy dan Intellij IDEA). Saya menggunakan JUnit 4.12, dan saya telah membuat anotasi kelas dengan @RunWith(JUnit4)dan diperpanjang dari "GroovyTestCase". Tanpa @RunWith(JUnit4)saya menghadapi masalah yang sama.
Veaceslav Gaidarji
Perilakunya masih sama dengan tahun 2017 (JUnit 4.12).
sharmaap
5

Coba Tambahkan

@Test di atas metode untuk tes seperti ini

@Test
public void testParse()
{

}
Mike Choi
sumber
5

Namun solusi lain yang mungkin saya akan lemparkan ke dalam ring: Saya tidak dapat menjalankan kelas pengujian baik dari jendela editor, maupun dari Package Explorer, tetapi mengklik kanan pada nama kelas di tampilan Outline dan memilih Run As JUnit Tes berhasil ... Pergi!

Matthew Wise
sumber
sama, dari tampilan garis besar berfungsi, yang lainnya tidak - saya telah mencoba setiap solusi yang diposting di 3 utas stack overflow, tidak ada yang berhasil
MPSL
Ini berfungsi untuk saya juga, tetapi tidak berguna untuk menguji cakupan di seluruh proyek.
kaya
4

Tidak ada testsuits di JUnit4. Gunakan anotasi atau gunakan konvensi nama JUnit3 lama.

Contoh:

@RunWith(Suite.class)
@SuiteClasses({YourClassWithTests.class})
Roman C
sumber
4

Ini terjadi pada saya juga. Saya mencoba memulai ulang Eclipse dan juga mengawali metode pengujian saya dengan pengujian. Tidak ada yang berhasil.

Langkah berikut berhasil: Ubah semua metode pengujian Anda yang ada di @BeforeClass dan @AfterClass ke metode statis.

yaitu jika Anda memiliki metode pengujian dalam format di bawah ini:

@BeforeClass
public void testBeforeClass(){
}

lalu ubah menjadi:

@BeforeClass
public static void testBeforeClass(){
}

Ini berhasil untuk saya.

revindran
sumber
4

Saya telah menemukan jawabannya:

Saya mendapat kesalahan ini ketika saya menjalankan tes mandiri dari eclipse (klik kanan pada metode dan pilih untuk menjalankan sebagai tes junit),

Ketika saya mengeksekusi kelas lengkap sebagai tes junit, tes dijalankan dengan benar dengan parameter.

Eyal Zamir
sumber
3

Ketika saya menghadapi masalah ini, saya hanya mengedit file dan menyimpannya ... berfungsi seperti pesona

Mahesh
sumber
1
Halo sobat dan selamat datang di Stackoverflow! :) Bisakah Anda menjelaskan jawaban Anda?
Littm
@Mahesh Maksud Anda menyegarkan file (pilih dan tekan F5)
Cassian
Saya menghadapi masalah yang sama dari scala, yaitu pengujian saya ditulis untuk JUnit4 tetapi dalam skala. Dan solusinya, seperti yang disarankan @Mahesh, adalah memberikan kompiler tendangan. Tidak masalah apa yang Anda lakukan saat mengedit file, Anda hanya perlu mengeditnya. Saya mengetik sesuatu yang memberikan kesalahan sintaks, menyimpan file, lalu membatalkan dan menyimpan lagi. Tiba-tiba tes saya berjalan. Ini sering terjadi pada saya, yaitu setidaknya setiap hari, biasanya beberapa kali per hari.
Erick G. Hagstrom
3

Masalah saya adalah bahwa pernyataan tersebut import org.junit.Test;telah hilang (atau tidak ditambahkan?). Setelah menambahkannya, saya harus menghapus importdeklarasi lain (Eclipse akan mengisyaratkan Anda yang mana) dan semuanya mulai berfungsi lagi.

Sergii
sumber
3

Sangat terlambat tetapi yang memecahkan masalah bagi saya adalah bahwa nama metode pengujian saya semuanya dimulai dengan huruf kapital: "Uji void publik". Membuat huruf kecil t berhasil.

Josh T.
sumber
ini berhasil untuk saya ... tetapi anehnya ini adalah solusi yang membingungkan
Anchit Mittal
2

Saya mencoba solusi dari Germán. Ini bekerja untuk semua metode dari kelas saya tetapi saya memiliki banyak kelas dalam proyek saya.

Jadi saya mencoba menghapus dari jalur build dan kemudian menambahkannya kembali. Ini bekerja dengan sempurna.

Semoga membantu.

Footix 29
sumber
2

Enam tahun kemudian ... dan masih ada masalah dengan Eclipse dan terkadang tidak menemukan JUnits.

Di Eclipse Mars 2 saya, saya menemukan bahwa itu tidak akan mengenali kelas uji yang ditarik dari git jika ada lebih dari 9 atau 10 @Testanotasi dalam file. Saya perlu mengomentari tes tambahan apa pun, menjalankan kelas pengujian, lalu menghapus komentar dan menjalankan kembali kelas tersebut. Pergi gambar ...

SimonB
sumber
Jawaban di sini sangat membantu, saya tidak memiliki situasi yang persis sama, tetapi nama metode pengujian sangat mirip dan gerhana mengalami masalah dalam menemukannya. Seperti testCase01, testCare02 ... Saya harus mengomentari metode "testCasexx" lainnya untuk menjalankan testCase01 atau jika tidak maka akan muncul pengecualian. Membuat semua metode pengujian PUBLIK tampaknya telah menyelesaikan masalah ini !!
01000001
1

Mungkin konfigurasi peluncuran JUnit Anda adalah untuk kelas pengujian individu, dan Anda entah bagaimana mengubah konfigurasi itu menjadi "menjalankan semua pengujian dalam folder sumber, paket, atau proyek"

Tapi itu bisa memicu pesan kesalahan "Tidak ditemukan pengujian dengan runner pengujian 'JUnit 4'".

Atau Anda melakukan modifikasi di kelas pengujian Anda, menghapus @Testanotasi.
Lihat halaman wiki ini .

VonC
sumber
@Test ada di sini, pesannya adalah: tidak bisa faind kelas utama toto.lolo.testrunner (yang ditentukan dalam konfigurasi run)
user281070
@lamisse: jadi, semacam masalah classpath? atau masalah sinteks: seharusnya toto.lolo.Testrunnerdan bukan toto.lolo.testrunner('T')
VonC
@lamisse: apakah "toto.lolo.Testrunner" adalah nama sebenarnya dari kelas TestRunner Anda? Apakah itu sesuatu yang kamu tulis? Apakah project / jar berisi itu di classpath konfigurasi peluncuran Anda?
phtrivier
1

Saya juga menghadapi masalah yang sama saat menjalankan uji JUnit. Saya menyelesaikan ini dengan meletakkan anotasi @Test tepat di atas fungsi pengujian utama.

Rajith
sumber
1

Apa yang memperbaiki kasus saya mirip dengan jawaban @ JamesG: Saya memulai ulang Eclipse, membangun kembali proyek, dan menyegarkannya; TAPI sebelum saya melakukan semua itu, saya terlebih dahulu menutup proyek (proyek klik kanan di penjelajah paket -> Tutup Proyek) dan kemudian membukanya kembali. Kemudian berhasil.

Solusi solusi yang saya temukan sebelum menemukan solusi pamungkas yang baru saja saya jelaskan: Salin kelas pengujian, dan jalankan kelas pengujian sebagai JUnit.

cellepo
sumber
1

Periksa apakah folder tempat pengujian Anda adalah folder sumber. Jika tidak - klik kanan dan gunakan sebagai folder sumber.

Todor Kolev
sumber
1

Tutup dan buka proyek yang berhasil untuk saya.

pengguna3022123
sumber
1

Ada kemungkinan lain, Anda mungkin telah mengubah Junit Test dari versi yang lebih rendah (misalnya Junit 3) menjadi Junit 4. Jadi ikuti langkah-langkah di bawah ini: -

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.
Kundan Atre
sumber
1

Tambahkan @Testdi atas tes Anda.
Arahkan mouse ke anotasi.
Pilih 'tambahkan junit 4 perpustakaan ke jalur kelas'

Mike
sumber
0

Apakah pakar proyek Eclipse Anda berbasis? Jika demikian, Anda mungkin perlu memperbarui versi m2eclipse.

Sekadar catatan singkat: Saya memiliki proyek di Eclipse yang berbasis maven, dan awalnya dihasilkan menggunakan wizard "proyek maven baru" di Eclipse. Saya menggunakan JUnit 4.5 untuk pengujian unit, dan dengan senang hati dapat menjalankan pengujian dari baris perintah menggunakan maven, dan pengujian individual dari Eclipse menggunakan run as JUnit test .... Namun, ketika saya mencoba menjalankan semua pengujian dalam proyek dengan menjalankan run as JUnit test ... pada node root proyek, Eclipse mengeluh " tidak ada pengujian yang ditemukan dengan test runner junit 4 ". Dipecahkan dengan memutakhirkan m2eclipse ke versi pengembangan stabil terbaru dari situs pembaruan m2eclipse (khususnya, saya memutakhirkan dari versi 0.9.8.200905041414 ke versi 0.9.9.200907201116 di Eclipse Galileo).

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

kaldu
sumber
Saya tidak mengerti, saya tidak berpikir bahwa ini terkait dengan versi eclispe, pengujian saya bekerja kemarin dan tidak terjadi sekarang karena popup peluncuran Junit apakah ada cara untuk mengatur ulang konfigurasi pertama saya?
pengguna281070
Lamisse, aku juga bingung. Saya menyarankan agar Anda memperbarui pertanyaan Anda untuk menjelaskan kapan uji coba unit bekerja dan kapan tidak berhasil.
b. Saudara
0

Ini juga terjadi pada saya. Saya menemukan bahwa di Eclipse saya tidak membuat file Java Class baru dan karena itu tidak dapat dikompilasi. Coba salin kode Anda ke dalam file kelas java jika belum ada, lalu kompilasi.

Anna
sumber
0

Saya menemukan bahwa Eclipse tampaknya hanya melakukan tes gaya JUnit 3 jika kelas pengujian Anda diperluas TestCase. Jika Anda menghapus warisan, anotasi berfungsi untuk saya.

Berhati-hatilah karena Anda perlu mengimpor secara statis semua assert*metode yang diperlukan seperti import static org.junit.Assert.*.

Martin C.
sumber
0

Saya harus melakukan mvn bersih pada baris perintah lalu proyek-> bersihkan di gerhana. Saya mengganti nama kelas sebelumnya kemudian menamainya kembali tetapi saya ragu itu membantu.

joe orang lain
sumber
0

Saya juga menjalankan Eclipse dengan Maven (m2e 1.4). Tes dijalankan dengan Maven, tetapi tidak dengan Eclipse ... bahkan setelah beberapa aplikasi Maven>Update project.

Solusi saya adalah menambahkan beberapa baris di .classpath yang dihasilkan oleh m2e. Garis-garis itu sekarang menempel.

<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>
pascal
sumber
0

Saya memiliki masalah ini dari waktu ke waktu. Hal yang paling menyelesaikan masalah bagi saya adalah menjalankan pengujian JUnit dari konfigurasi Run ... memastikan bahwa JUnit 4 disetel sebagai runner pengujian.

Secara umum, saya melihat masalah ini saat mencoba Jalankan Sebagai ... uji Junit dari menu konteks di Package Explorer. Jika Anda mengklik kanan kode untuk pengujian yang Anda coba jalankan dan alih-alih memilih Run As ... Junit Test, Anda memilih Run configurations ... pastikan Project, Test Class, dan test runner disetel dengan benar, klik terapkan, lalu jalankan bekerja sepanjang waktu untuk saya.

theINtoy
sumber
0

Saya mulai bekerja dengan Selenium dan Eclipse dalam pekerjaan saya dan saya melakukan pengujian otomatis pertama saya dan saya menghapus dari kode @Before, @Test, dan @After notes dan saya mengalami masalah ini "Tidak ada pengujian yang ditemukan dengan pelari uji junit4" .

Solusi saya hanya dengan menambahkan lagi catatan @Before, @Test dan @After dan dengan itu skrip saya berfungsi. Penting untuk tidak menghapus ini dari kode.

Ini adalah tes sederhana yang menggunakan Google untuk mencari sesuatu:

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();
    }

}
JuanTorre
sumber
0

Menggunakan ScalaIDE (3.0.4-2.11-20140723-2253-typesafe) Saya mengalami masalah serupa dengan Right Click Scala Test Class-> Run As -> Scala Junit Testmenu konteks.

Saya mencoba mengedit kelas (tetapi tidak untuk kegagalan kompilasi), membersihkan, menutup proyek, menutup Eclipse. Tak satu pun dari mereka yang bekerja untuk memulihkan menu konteks untuk kelas yang sebelumnya bekerja dengan baik. Kelas pengujian tidak menggunakan @Testanotasi dan sebaliknya menggunakan @RunWith(classOf[JUnitRunner])anotasi di bagian atas kelas menggunakan kode ScalaTest.

Ketika saya mencoba memilih Scala Junit Test dari editor peluncuran Jalankan Konfigurasi secara langsung, saya menerima dialog dari pertanyaan. Jawaban Footix29 adalah kuncinya bagi saya.

Saya perhatikan bahwa meskipun saya telah membersihkan proyek saya beberapa kali, kelas saya di direktori / bin belum benar-benar dibangun kembali dalam beberapa waktu.

Begini cara saya mendapatkan kembali menu konteks, dan dapat menjalankan kembali Scala Junit Tests:

  • manuallymembersihkan kelas dengan menghapus /bin/<package dir>*via Explorer
  • Project -> Cleaned proyek bersama dengan pembangunan kembali penuh

Saya menduga bahwa pengeditan kelas secara umum dapat membersihkan beberapa status Eclipse yang disimpan dan menjalankannya lagi. Dalam kasus saya, semua kelas pekerja yang saya coba sebelumnya telah gagal sehingga manuallangkah bersih hanyalah palu yang saya butuhkan. Namun, trik lain yang memengaruhi konsep Eclipse tentang jalur kelas / status build juga harus berfungsi.

Lebih lanjut, saya pikir perilaku ini dipicu sebagian dengan mencoba merefaktor kelas Scala dengan mengganti namanya (yang disebalkan oleh Scala Eclipse IDE), di mana semua pembersihan setelah perubahan file awal dilakukan secara manual. Tidak ada kesalahan versi, tetapi juga tidak ada peringatan yang saya harapkan yang berarti ada sesuatu yang pasti macet di info status pembuatan Eclipse.

n0741337
sumber