Saya menggunakan Hudson sebagai server integrasi berkelanjutan dan saya ingin menggunakan opsi 'Publikasikan laporan hasil pengujian JUnit'. Tapi saya tidak menggunakan alat xUnit untuk pengujian, alih-alih saya punya skrip shell yang menjalankan tes dan mengembalikan hasil dalam format sederhana. Saya berpikir untuk membuat skrip yang mengubah hasil ini ke format JUnit. Jadi saya menarik bagaimana file JUnit harus terlihat?
183
Jawaban:
Saya melakukan hal serupa beberapa bulan yang lalu, dan ternyata format sederhana ini sudah cukup bagi Hudson untuk menerimanya sebagai protokol uji:
Pertanyaan ini memiliki jawaban dengan rincian lebih lanjut: Spec. untuk JUnit XML Output
sumber
class
ditolak dan hanyaclassname
berfungsi.<testsuite tests="(number of tests)">
mantan.<testsuite tests="10">
.<testcase classname="foo.bar" name="ATest" />
Ini akan menempatkan kelas bar dalam paket foo di Jenkins membuat koleksi tes Anda lebih terorganisir.Saya baru saja meraih junit-4.xsd yang telah ditautkan oleh orang lain dan menggunakan alat bernama XMLSpear untuk mengubah skema menjadi file XML kosong dengan opsi yang ditunjukkan di bawah ini. Ini adalah hasil (sedikit dibersihkan):
Beberapa item ini dapat terjadi beberapa kali:
testsuites
elemen, karena itulah cara kerja XML, tetapi bisa ada banyaktestsuite
elemen di dalamtestsuites
elemen.properties
elemen dapat memiliki beberapaproperty
anak.testsuite
elemen dapat memiliki beberapatestcase
anak.testcase
elemen dapat memiliki beberapaerror
,failure
,system-out
, atausystem-err
anak-anak.sumber
Rootelement
:testsuites
,Max recursive de...
:2
,Max Repeat factor
:2
,include optional elements
: (ya = dicentang),include optional attributes
: (ya = dicentang)The jawaban atas pertanyaan Anders Lindahl mengacu pada berkas xsd .
Secara pribadi saya menemukan file xsd ini juga sangat berguna (saya tidak ingat bagaimana saya menemukan itu). Itu terlihat agak kurang menakutkan, dan sejauh yang saya gunakan, semua elemen dan atribut tampaknya dikenali oleh Jenkins (v1.451)Namun satu hal: ketika menambahkan beberapa
<failure ...
elemen, hanya satu yang dipertahankan di Jenkins. Saat membuat file xml, saya sekarang menggabungkan semua kegagalan dalam satu.Pembaruan 2016-11 Tautan rusak sekarang. Alternatif yang lebih baik adalah halaman ini dari cubic.org: JUnit XML format file pelaporan , di mana upaya yang baik telah diambil untuk memberikan contoh yang didokumentasikan masuk akal . Contoh dan xsd disalin di bawah, tetapi halaman mereka terlihat lebih bagus.
contoh file XML JUnit
JUnit file XSD
sumber
Saya tidak dapat menemukan informasi yang bagus tentang ini, jadi saya melakukan beberapa percobaan. Atribut dan bidang berikut (dan hanya ini) dikenali oleh Jenkins (v1.585).
(Saya mulai dengan dokumen XML sampel ini dan bekerja mundur dari sana.)
sumber
Struktur Dasar Berikut adalah contoh file output JUnit, menampilkan hasil lewati dan gagal, serta hasil tunggal yang dilewati.
Di bawah ini adalah struktur terdokumentasi dari laporan XML JUnit yang khas. Perhatikan bahwa laporan dapat berisi 1 atau lebih paket uji. Setiap rangkaian uji memiliki serangkaian properti (merekam informasi lingkungan). Setiap test suite juga mengandung 1 atau lebih test case dan masing-masing test case akan berisi simpul yang dilewati, gagal atau kesalahan jika tes tidak lulus. Jika test case telah lulus, maka tidak akan berisi node. Untuk detail lebih lanjut tentang atribut mana yang valid untuk setiap node, bacalah bagian "Skema" berikut.
sumber
Ada beberapa skema untuk hasil "JUnit" dan "xUnit".
model/xsd
)Harap dicatat bahwa ada beberapa versi skema yang digunakan oleh Jenkins xunit-plugin (versi terbaru saat ini adalah
junit-10.xsd
yang menambahkan dukungan untuk format Erlang / OTP Junit).Beberapa kerangka kerja pengujian serta plugin pelaporan gaya "xUnit" juga menggunakan saus rahasia mereka sendiri untuk menghasilkan laporan gaya "xUnit", yang mungkin tidak menggunakan skema tertentu (baca: mereka mencoba tetapi alat mungkin tidak memvalidasi terhadap apa pun satu skema). Python unittests di Jenkins? memberikan perbandingan cepat dari beberapa pustaka ini dan sedikit perbedaan antara laporan xml yang dihasilkan.
sumber
Jawaban yang bagus di sini tentang penggunaan python: (ada banyak cara untuk melakukannya) Python unittests di Jenkins?
IMHO cara terbaik adalah menulis tes unittest python dan menginstal pytest (sesuatu seperti 'yum install pytest') untuk menginstal py.test. Kemudian jalankan tes seperti ini: 'py.test --junitxml results.xml test.py' . Anda dapat menjalankan skrip python unittest dan mendapatkan hasil xml jUnit.
https://docs.python.org/2.7/library/unittest.html
Dalam konfigurasi jenkins build Post-build tindakan Tambahkan tindakan "Publikasikan laporan hasil tes JUnit" dengan result.xml dan file hasil tes lagi yang Anda hasilkan.
sumber
Saya telah memutuskan untuk mengirim jawaban baru, karena beberapa jawaban yang ada sudah usang atau tidak lengkap.
Pertama-tama: tidak ada yang seperti itu
JUnit XML Format Specification
, hanya karena JUnit tidak menghasilkan laporan XML atau HTML apa pun.Pembuatan laporan XML itu sendiri berasal dari tugas Ant JUnit / Maven Surefire Plugin / Gradle (mana yang Anda gunakan untuk menjalankan tes Anda). Format laporan XML pertama kali diperkenalkan oleh Ant dan kemudian diadaptasi oleh Maven (dan Gradle).
Jika seseorang hanya membutuhkan format XML resmi maka:
Semoga ini bisa membantu seseorang.
sumber
**/build/test-results/**/TEST-*.xml
. Terima kasih banyak!!!