Pertanyaan Apakah JUnit mengeksekusi test case secara berurutan?


Di dalam posSaya mengajukan pertanyaan kecil sebagai bagian dari masalah yang lebih besar. Karena saya belum mendapat tanggapan, saya mengajukan pertanyaan saya di sini:

Apakah masuk akal untuk menganggap bahwa JUnit mengeksekusi kasus uji secara berurutan: sebuah kasus uji berakhir sebelum yang berikutnya dimulai. Apakah itu berbeda antara versi JUnit (prioritas saya adalah pada JUnit4)? Dan jika tidak, apakah ada cara sederhana untuk memaksa JUnit melakukan tes secara berurutan?

Terima kasih


32
2017-09-01 08:29


asal


Jawaban:


Ya, secara default saya percaya itu menjalankan tes secara berurutan.

JUnit 4.6 memperkenalkan percobaan ParallelRunner untuk menjalankan tes secara paralel - saya tidak tahu statusnya saat ini. Saya berharap paralelisme untuk tetap menjadi "opt-in" fitur secara default sekalipun. (Dilihat dari jawaban lain, sepertinya sekarang ini di sini untuk tinggal tetapi dalam bentuk yang sedikit berbeda - dan masih ikut serta.)


24
2017-09-01 08:32



Pelaksanaan tes paralel didukung sejak JUnit 4.7. Tetapi sejauh yang saya tahu, itu tidak pernah dilakukan secara otomatis, Anda secara khusus perlu mengkonfigurasinya, mis. seperti di sini: http://java.dzone.com/articles/running-junit-tests-parallel

Tetapi jangan lupa bahwa:

Tes otomatis yang baik harus independen, terisolasi dan dapat direproduksi, menjadikannya kandidat ideal untuk dijalankan secara bersamaan.

Saya tidak tahu mengapa Anda bertanya, tetapi jika kriteria di atas tidak terpenuhi, Anda mungkin ingin memikirkan desain tes Anda.


15
2017-09-01 08:35



Tebakan yang kuat dan masuk akal: ya, JUnit adalah single threaded secara default.

Kalau tidak, orang tidak akan tahu apakah tes gagal karena kode rusak atau gagal karena masalah konkurensi jika beberapa tes berjalan secara paralel.


4
2017-09-01 08:33



Iya nih,

Dan juga memikirkan tentang @before dan @after di sana Anda mungkin memiliki kode yang mengembalikan status untuk pengujian berikutnya untuk dijalankan.


3
2017-09-01 08:49



Iya nih. Seperti disebutkan di suatu tempat di komentar, Anda harus merencanakan dengan hati-hati pengaturan dan teardown testcase (semua superclasses mempengaruhi tindakan tersebut), serta pengaturan testsuite dan teardown.

Juga, pada catatan sekunder, sejauh yang saya ingat, JUnit tidak menjamin urutan eksekusi dari testcases (yaitu, kecuali mereka berada di suite, saya kira). Ini penting, dan harus mendorong Anda untuk melakukan pembersihan yang sangat tepat dan pemulihan status SUT antara tes, dan menghindari kasus uji yang mengandalkan hasil testcase lain. Anda mungkin mengatakan bahwa ini adalah semacam antipattern :).


1
2017-09-07 07:56



Dengan pengalaman saya, saya dapat mengatakan bahwa kami dapat membuat serialisasi tes di kelas dengan menyebutkan nama metode yang memiliki Test di dalamnya. ex:

@Test

public ..... firstTest ()
{

}

@Test

public .... thirdTest()
{

}

@Test

public....secondTest()
{

}

Pesanan adalah firstTest, thirdTest, secondTest


-2
2018-03-08 14:58