Kerangka kerja JUnit berisi 2 Assert
kelas (dalam paket yang berbeda, jelas) dan metode pada masing-masing tampaknya sangat mirip. Adakah yang bisa menjelaskan mengapa ini?
Kelas yang saya maksud adalah: junit.framework.Assert
dan org.junit.Assert
.
junit.framework.*
dari dropdown impor statis diEditor->General->Auto Import->Exclude from Import and Completion
.Jawaban:
Metode lama (JUnit 3) adalah untuk menandai kelas-tes dengan memperluas
junit.framework.TestCase
. Itu mewarisijunit.framework.Assert
sendiri dan kelas tes Anda memperoleh kemampuan untuk memanggil metode tegas dengan cara ini.Sejak versi 4 JUnit, kerangka kerja ini digunakan
Annotations
untuk tes penandaan. Jadi Anda tidak perlu lagi memperpanjangTestCase
. Tapi itu berarti, metode tegas tidak tersedia. Tetapi Anda dapat membuat impor statisAssert
kelas baru . Itu sebabnya semua metode tegas di kelas baru adalah metode statis. Jadi Anda dapat mengimpornya dengan cara ini:Setelah impor statis ini, Anda dapat menggunakan metode ini tanpa awalan.
Pada desain ulang mereka juga pindah ke paket baru
org.junit
yang mengikuti lebih baik konvensi normal untuk penamaan paket.sumber
JUnit 3.X:
junit.framework.Assert
JUnit 4.X:
org.junit.Assert
Lebih suka yang terbaru, terutama ketika menjalankan JDK5 dan lebih tinggi dengan dukungan anotasi.
sumber
Sebenarnya ada perubahan fungsional:
org.junit.Assert
akan mengeluh jika Anda menggunakan dua argumenassertEquals()
denganfloat
ataudouble
, sementarajunit.framework.Assert
akan diam-diam mengubahnya.sumber
Saya percaya mereka refactoring dari
junit.framework
keorg.junit
danjunit.framework.Assert
dipertahankan untuk kompatibilitas ke belakang.sumber
Saya melakukan perbandingan kode sumber kasar dan tidak ada perubahan serius. Banyak komentar ditambahkan
org.junit.Assert
dan beberapa refactor dilakukan. Satu-satunya perubahan adalah perbandingan denganArrays
. Ada beberapa pembersihan kode, tetapi (imho) tidak ada perubahan fungsional .sumber
Di Android Studio (dan juga di IntelliJ), Anda dapat mengecualikan secara global
junit.framework
dari proposal impor otomatis.Anda dapat mengatur ruang lingkup antara
IDE
atauProject
. Jika Anda tidak memiliki proyek yang menggunakan JUnit 3, Anda dapat tetap menggunakan lingkup IDE dengan aman.Pengaturan posisi:
sumber