Rumah Keuangan Pribadi Menggunakan JUnit - dummies

Menggunakan JUnit - dummies

Daftar Isi:

Video: Java - JUnit testing in Eclipse 2024

Video: Java - JUnit testing in Eclipse 2024
Anonim

JUnit adalah kerangka standar untuk menguji unit Java (yaitu kelas Java). JUnit dapat diotomatisasi untuk melakukan beberapa pengujian di luar pengujian.

Bayangkan Anda telah menciptakan tipe enum dengan tiga nilai: GREEN, YELLOW, dan RED. Kode 1 berisi kode:

Listing 1

enum publik SignalColor {GREEN, YELLOW, RED}

Lampu lalu lintas memiliki status (yang merupakan nama keren untuk warna lampu lalu lintas).

kelas publik TrafficLight {SignalColor state = SignalColor. MERAH;

Jika Anda mengetahui kondisi arus lalu lintas, Anda dapat memutuskan keadaan lampu lalu lintas berikutnya.

public void nextState () {switch (state) {case RED: state = SignalColor. HIJAU; istirahat; kasus KUNING: negara = SignalColor. MERAH; istirahat; kasus GREEN: state = SignalColor. KUNING; istirahat; default: state = SignalColor. MERAH; break;}}

Anda juga dapat mengubah status lampu lalu lintas beberapa kali:

public void change (int numberOfTimes) {untuk (int i = 0; i 

Menempatkan semuanya, Anda memiliki kelas TrafficLight di Listing 2.

Listing 2

kelas publik TrafficLight {SignalColor state = SignalColor. MERAH; public void nextstate () {switch (state) {case RED: state = SignalColor. HIJAU; istirahat; kasus KUNING: negara = SignalColor. MERAH; istirahat; kasus GREEN: state = SignalColor. KUNING; istirahat; default: state = SignalColor. MERAH; break}} public void change (int numberOfTimes) {untuk (int i = 0; i 

Di masa lalu Anda mungkin terus menulis kode, membuat lebih banyak kelas, memanggil metode nextstate dan change di Listing 2. Kemudian, setelah beberapa bulan coding, Anda akan berhenti sejenak untuk menguji pekerjaan Anda.

Dan betapa terkejutnya! Tes Anda akan gagal total! Anda seharusnya tidak pernah menunda pengujian lebih dari satu atau dua hari. Uji awal dan uji sering!

Satu filosofi tentang pengujian mengatakan bahwa Anda harus menguji setiap potongan kode begitu Anda telah menulisnya. Tentu saja, ungkapan "potongan kode" tidak terdengar sangat ilmiah. Tidak akan ada gunanya pengembang berkeliling untuk berbicara tentang "pengujian potongan-kode" yang mereka lakukan siang ini. Lebih baik memanggil setiap potongan kode unit , dan minta pengembang untuk membicarakan unit testing .

Unit pengujian yang paling umum adalah kelas. Jadi, pengembang Java yang khas menguji setiap kelas begitu kode kelas ditulis.

Jadi bagaimana Anda menguji kelas? Seorang pemula mungkin menguji kelas TrafficLight dengan menulis kelas tambahan - kelas yang berisi metode utama. Metode utama menciptakan sebuah instance TrafficLight, memanggil metode nextstate dan change, dan menampilkan hasilnya.Pemula memeriksa hasil dan membandingkannya dengan beberapa nilai yang diharapkan.

Setelah menulis metode utama untuk puluhan, ratusan, atau bahkan ribuan kelas, pemula (sekarang pengembang penuh) menjadi lelah dengan rutinitas pengujian dan mencari cara untuk mengotomatisasi prosedur pengujian. Lelah atau tidak, satu pengembang mungkin mencoba untuk menguraikan tes kode tangan pengembang lainnya. Tanpa memiliki standar atau pedoman untuk membuat tes, membaca dan memahami tes pengembang lain bisa jadi sulit dan membosankan.

Jadi JUnit datang untuk menyelamatkannya!.

Untuk mengetahui bagaimana Eclipse mengotomatiskan penggunaan JUnit, lakukan hal berikut:

  1. Buat proyek Eclipse yang berisi Listing 1 dan 2.

  2. Pada Windows, klik kanan TrafficLight Package Explorer. cabang java Di Mac, klik kontrol TrafficLight Package Explorer. cabang java

    Menu konteks muncul.

  3. Pada menu konteks, pilih New → JUnit Test Case.

    Akibatnya, kotak dialog New JUnit Test Case muncul.

  4. Klik Next di bagian bawah kotak dialog New JUnit Test Case.

    Sebagai hasilnya, Anda melihat halaman kedua kotak dialog Kasus JUnit Test Baru. Halaman kedua berisi daftar metode yang dimiliki (baik secara langsung atau tidak langsung) ke kelas TrafficLight.

  5. Tempatkan tanda centang di kotak centang berlabel Lampu Lalu Lintas.

    Akibatnya, Eclipse menempatkan tanda centang di kotak centang nextState () dan (int) .

  6. Klik Finish di bagian bawah kotak dialog New JUnit Test Case.

    JUnit bukan bagian Jawa secara formal. Sebagai gantinya datang dengan kumpulan kelas dan metode untuk membantu Anda membuat tes untuk kode Anda. Setelah Anda klik Finish, Eclipse bertanya kepada Anda apakah Anda ingin memasukkan kelas dan metode JUnit sebagai bagian dari proyek Anda.

  7. Pilih Lakukan Tindakan Berikut dan Tambah JUnit 4 Library ke Build Path. Kemudian klik OK.

    Eclipse menutup kotak dialog dan proyek Anda memiliki TrafficLightTest yang baru. file java Kode file ditunjukkan pada Listing 3.

    Kode pada Listing 3 berisi dua tes, dan kedua tes tersebut berisi panggilan ke metode gagal yang tidak menyenangkan. Eclipse ingin Anda menambahkan kode untuk membuat tes ini lulus.

  8. Hapus panggilan ke metode gagal. Di tempat pemanggilan metode gagal, ketik kode yang ditunjukkan dengan huruf tebal di Listing 4.

  9. Di Package Explorer, klik kanan (di Windows) atau klik kontrol (di Mac) TrafficLightTest. cabang java Pada menu konteks yang dihasilkan, pilih Run As → JUnit Test.

    Gerhana mungkin memiliki lebih dari satu jenis kerangka pengujian JUnit di lengan bajunya. Jika demikian, Anda mungkin melihat kotak dialog seperti di bawah ini. Jika Anda melakukannya, pilih Eclipse JUnit Launcher, lalu klik OK.

    Akibatnya, Eclipse menjalankan TrafficLightTest Anda. program java Eclipse menampilkan hasil run di depan Package Explorer miliknya. Hasilnya tidak menunjukkan kesalahan dan tidak ada kegagalan. Wah!

Cantumkan 3

impor org statis. junit Menegaskan. *; impor org. junit Uji; public class TrafficLightTest {@Test public void testNextState () {fail ("belum diimplementasikan");} @Test public void testChange () {fail ("Not yet implement");}}

Listing 4

import org statisjunit Menegaskan. *; impor org. junit Uji; kelas publik TrafficLightTest {@Test public void testNextState () { TrafficLight light = TrafficLight baru (); assertEquals (SignalColor, RED, light. State); cahaya nextState (); assertEquals (SignalColor GREEN, light. State); cahaya nextState (); assertEquals (SignalColor. KUNING, cahaya. Negara); cahaya nextState (); assertEquals (SignalColor, RED, light. State); } @Test public void testChange () { TrafficLight light = TrafficLight baru (); cahaya perubahan (5); assertEquals (SignalColor. KUNING, cahaya. Negara); }}

Bila Anda memilih Run As → JUnit Test, Eclipse tidak mencari metode utama. Sebagai gantinya, Eclipse mencari metode yang dimulai dengan @Test dan hal-hal lainnya. Eclipse menjalankan masing-masing metode @Test.

Hal-hal seperti @Test adalah Java anotasi .

Listing 4 berisi dua metode @Test: testNextState dan testChange. Metode testNextState menempatkan metode TrafficLight nextstate untuk diuji. Demikian pula, metode testChange melenturkan otot metode TrafficLight change.

Pertimbangkan kode di metode testNextState. Metode testNextState berulang kali memanggil metode nextstate kelas TrafficLight dan metode assertEquals JUnit. Metode assertEquals mengambil dua parameter: nilai yang diharapkan dan nilai sebenarnya.

  • Pada panggilan assertEquals paling atas, nilai yang diharapkan adalah SignalColor. MERAH. Anda mengharapkan lampu lalu lintas menyala karena, pada Listing 2, Anda menginisialisasi keadaan cahaya dengan nilai SignalColor. MERAH.

  • Pada panggilan assertEquals paling atas, nilai sebenarnya ringan. negara (warna yang sebenarnya tersimpan dalam variabel keadaan lampu lalu lintas).

Jika nilai sebenarnya sama dengan nilai yang diharapkan, panggilan untuk memastikan lolos dan JUnit terus mengeksekusi pernyataan dalam metode testNextState.

Tetapi jika nilai sebenarnya berbeda dari nilai yang diharapkan, assertEquals gagal dan hasil run menampilkan kegagalan. Sebagai contoh, pertimbangkan apa yang terjadi bila Anda mengubah nilai yang diharapkan dalam assertEquals pertama di Listing 4:

@Test public void testNextState () {TrafficLight light = new TrafficLight (); assertEquals (SignalColor. KUNING, cahaya. negara);

Segera setelah konstruksi, lampu lalu lintas menyala MERAH, bukan KUNING. Jadi metode testNextState berisi pernyataan palsu dan hasil menjalankan Run As → JUnit terlihat seperti kartu laporan buruk anak.

Setelah testNextState sebelum testChange di Listing 4 tidak menjamin bahwa JUnit akan mengeksekusi testNextState sebelum mengeksekusi testChange. Jika Anda memiliki tiga metode @Test, JUnit mungkin mengeksekusinya dari paling atas sampai ke titik paling bawah, dari jarak paling bawah sampai paling bawah, dari metode tengah sampai yang paling dekat ke bagian paling bawah, atau dalam urutan apapun sama sekali. JUnit bahkan mungkin berhenti sejenak di tengah satu tes untuk mengeksekusi bagian tes lain. Itulah mengapa Anda tidak boleh membuat asumsi tentang hasil dari satu tes saat Anda menulis tes lain.

Anda mungkin ingin pernyataan tertentu dieksekusi sebelum tes dimulai.Jika Anda melakukannya, letakkan pernyataan tersebut dalam metode yang bernama setUp, dan maklum metode itu dengan penjelasan @Sebelum anotasi. (Lihat kotak centang setUp () pada gambar di Langkah 3 di Listing 2 di atas.)

Ini berita: Tidak semua metode assertEquals dibuat sama! Bayangkan menambahkan kelas Driver ke kode proyek Anda. "Driver class" tidak berarti driver printer atau driver tumpukan. Artinya seseorang mengendarai mobil - mobil yang mendekati lampu lalu lintas Anda. Untuk detailnya, lihat Listing 5.

Listing 5

public class Driver {public double velocity (lampu TrafficLight) {switch (light. State) {case RED: return 0. 0; kasus KUNING: kembali 10. 0; kasus GREEN: return 30. 0; default: return 0. 0;}}}

Bila lampu menyala merah, kecepatan pengemudi adalah 0. 0. Bila lampu berwarna kuning, mobil akan melambat ke posisi yang aman 10. 0. Bila lampu menyala hijau, kapal pesiar mobil dengan kecepatan 30. 0.

(Dalam contoh ini, satuan kecepatan tidak masalah, bisa mil per jam, kilometer per jam, atau apapun. Satu-satunya cara adalah jika mobil di Boston atau New York City. Dalam hal ini, kecepatan untuk KUNING harus jauh lebih tinggi daripada kecepatan GREEN, dan kecepatan untuk RED tidak boleh 0. 0.)

Untuk membuat tes JUnit untuk Driver class, ikuti langkah 1 sampai 9 yang tertera sebelumnya di artikel ini, tapi pastikan untuk melakukan perubahan berikut:

  • Pada Langkah 2, klik kanan atau kontrol-klik Driver. cabang java bukan TrafficLight. cabang java

  • Pada Langkah 5, beri tanda cek di bagian Driver.

  • Pada Langkah 8, hapus metode gagal untuk membuat kelas DriverTest yang ditunjukkan pada Listing 6. (Kode yang Anda ketikkan ditampilkan dalam huruf tebal.)

Listing 6

import static org. junit Menegaskan. *; impor org. junit Uji; kelas publik DriverTest {@Test public void testVelocity () { TrafficLight light = new TrafficLight (); cahaya perubahan (7); Driver driver = driver baru (); assertEquals (30.0, kecepatan pengemudi (cahaya), 0. 1); }}

Jika semuanya berjalan lancar, tes JUnit lewat dengan warna terbang. (Untuk lebih tepatnya, JUnit lolos dengan warna hijau!) Jadi, jalannya DriverTest bukanlah hal baru atau menarik. Yang menarik adalah panggilan untuk memastikan Listing di Daftar 6.

Bila Anda membandingkan dua nilai ganda dalam program Java, Anda tidak berhak mengharapkan persamaan di-hidung. Artinya, salah satu dari nilai ganda mungkin 30. 000000000 sedangkan nilai ganda lainnya mendekati 30. 000000001. Komputer hanya memiliki 64 bit untuk menyimpan setiap nilai ganda, dan ketidakakuratan merayap di sana sini. Jadi di JUnit, metode assertEquals untuk membandingkan nilai ganda memiliki parameter ketiga. Parameter ketiga mewakili ruang gerak.

Pada Listing 6, pernyataan

assertEquals (30.0, kecepatan driver (lampu), 0. 1);

mengatakan hal berikut: "Tegaskan bahwa nilai sebenarnya dari driver. kecepatan (cahaya) berada di dalam 0. 1 dari nilai yang diharapkan 30. 0. Jika demikian, asersi tersebut lewat. Jika tidak, pernyataan tersebut gagal. "

Bila Anda memanggil assertEquals untuk nilai ganda, memilih margin kesalahan yang baik bisa menjadi rumit.Angka-angka ini menggambarkan hal-hal yang bisa salah.

Di sini, margin of error Anda terlalu kecil.

Di sana, margin of error Anda terlalu besar.

Untungnya, dalam contoh DriverTest ini, margin 0. 1 adalah taruhan yang sangat aman. Inilah alasannya:

  • Saat tes assertEquals gagal, gagal lebih dari 0. 1.

    Kegagalan berarti memiliki supir. nilai kecepatan (cahaya) seperti 0. 0 atau 10. 0.

  • Dalam contoh ini, saat uji coba assertEquals lolos, ini mungkin merupakan persamaan menyeluruh on-the-nose.

    Nilai pengemudi. kecepatan (cahaya) datang langsung dari kode 30. 0 pada Listing 5. Tidak ada aritmatika yang terlibat. Jadi nilai pengemudi. kecepatan (cahaya) dan nilai 30. 0 yang diharapkan harus sama persis (atau hampir sama).

Menggunakan JUnit - dummies

Pilihan Editor

Bagaimana Menutup presentasi PowerPoint 2007 Presentation - dummies

Bagaimana Menutup presentasi PowerPoint 2007 Presentation - dummies

Menutup presentasi PowerPoint seperti memasukkannya ke dalam folder, dan menyimpan folder di laci yang tepat. Ada tiga cara yang berbeda untuk menutup presentasi PowerPoint:

Bagaimana Bandingkan Fitur PowerPoint 2013 Presentation - dummies

Bagaimana Bandingkan Fitur PowerPoint 2013 Presentation - dummies

Bandingkan fitur di PowerPoint 2013 memungkinkan Anda membandingkan perbedaan antara dua versi dari sebuah presentasi dan menerima atau menolak perbedaan. Fitur ini berguna jika Anda telah mengirimkan salinan presentasi ke reviewer dan Anda ingin secara selektif menggabungkan perubahan resensi. Menggunakan fitur Compare sangatlah mudah. Berikut adalah ...

Bagaimana Mengompres Gambar Anda di PowerPoint 2013 - dummies

Bagaimana Mengompres Gambar Anda di PowerPoint 2013 - dummies

PowerPoint 2013 mencakup perintah Compress Pictures yang dapat menghilangkan detail asing di gambar Anda dan dengan demikian mengurangi ukuran file presentasi Anda. Untuk menghemat lebih banyak ruang, perintah Compress Pictures juga akan menghapus bagian gambar Anda yang telah dipotong. Anda bisa menggunakan perintah ini untuk memampatkan hanya satu ...

Pilihan Editor

Cara Menggunakan NaturallySpeaking dengan Kotak Dialog Umum - dummies

Cara Menggunakan NaturallySpeaking dengan Kotak Dialog Umum - dummies

Secara alamiSpeaking dapat membantu Anda mengendalikan kotak dialog. Ini adalah & ldquo; Lihat Ma, tidak ada tangan & rdquo; contoh. Semuanya dilakukan dengan perintah suara. Tentu, terkadang Anda bisa menyelesaikan tugas lebih cepat dengan mematuk kunci atau menggerakkan mouse Anda. Seiring waktu, Anda akan menyelesaikan kompromi Anda sendiri antara perintah suara dan perintah mouse dan keyboard. Untuk pencarian berikut, NaturallySpeaking ...

Bagaimana Menggunakan "Klik" Command di NaturallySpeaking - dummies

Bagaimana Menggunakan "Klik" Command di NaturallySpeaking - dummies

Para insinyur di Nuance dapat ' t mengantisipasi setiap perintah yang mungkin digunakan oleh aplikasi nyasar, jadi mereka telah melakukan hal terbaik berikutnya: Mereka membuat perintah "Klik" untuk mengubah menu aplikasi menjadi perintah suara. Begini cara menggunakannya: Katakan, "Klik " untuk memperluas menu. Setiap judul yang muncul pada aplikasi ...

Bagaimana Menggunakan Mikrofon Profesional Naga Secara Pribadi:" Apakah Hal Ini Aktif? " - dummies

Bagaimana Menggunakan Mikrofon Profesional Naga Secara Pribadi:" Apakah Hal Ini Aktif? " - dummies

Dapat menjadi lucu saat Anda menyadari bahwa mikrofon Profesional Dragon Professional Anda telah berada di sepanjang waktu Anda menerima telepon terakhir Anda. Kata-kata yang Anda didiktekan tidak akan terlihat seperti apa yang Anda katakan. Ada jeda; Anda membuang muka dan mungkin mikrofon ditekan di bawah dagu Anda. Segera hapus ...

Pilihan Editor

10 Hal yang sering terjadi pada PowerPoint 2016 - dummies

10 Hal yang sering terjadi pada PowerPoint 2016 - dummies

Jumlah sebenarnya dari hal-hal yang dapat terjadi Salah saat bekerja dengan PowerPoint 2016 mungkin mendekati 10.000, tapi sepuluh di antaranya adalah yang paling sering salah. Anda tidak dapat menemukan file Anda Entah Anda menyimpan file dalam folder yang berbeda, atau Anda menggunakan nama file yang berbeda untuk menyimpannya ...

Menerapkan Style to a Table pada PowerPoint 2007 - dummies

Menerapkan Style to a Table pada PowerPoint 2007 - dummies

Setelah Anda membuat sebuah tabel di slide PowerPoint, gunakan kontrol di bawah Table Tools pada PowerPoint Ribbon untuk memformatnya. PowerPoint menawarkan beberapa gaya tabel yang telah ditentukan. Sebelum Anda menerapkan sebuah gaya, gunakan kotak centang yang muncul di sisi kiri tab Desain di bawah Table Tools on the Ribbon. Header ...

5 Trik bagus untuk PowerPoint 2016 - dummies

5 Trik bagus untuk PowerPoint 2016 - dummies

Ada banyak hal yang menyukai PowerPoint 2016, terutama jika Anda tahu caranya untuk menggunakan semua lonceng dan peluit. Berikut adalah beberapa tip dan trik yang perlu diingat: Skala ukuran slide ke dimensi monitor Ada dua rasio aspek dasar untuk layar komputer: standar (4: 3) dan lebar (16: 9). Angka-angka ini ...