Rumah > Java > javaTutorial > Contoh Ujian Unit Jsonunit Ass AssquentJ JSON

Contoh Ujian Unit Jsonunit Ass AssquentJ JSON

James Robert Taylor
Lepaskan: 2025-03-07 18:24:20
asal
881 orang telah melayarinya

Jsonunit AssertJ JSON Ujian Ujian Contoh

Bahagian ini menyediakan contoh konkrit yang menunjukkan cara menggunakan JSONUNIT dan AssertJ bersama -sama untuk ujian unit JSON di Java. Kami akan memanfaatkan pernyataan fasih Asser Teasis untuk kebolehbacaan dan keupayaan JSONUNIT untuk mengendalikan perbandingan JSON. Ingatlah untuk memasukkan kebergantungan yang diperlukan dalam fail (atau setara yang setara). AssertJ menyediakan API yang fasih dan boleh dibaca untuk pernyataan. Menggabungkan mereka memanfaatkan kekuatan kedua -dua perpustakaan. Penggunaan yang berkesan melibatkan:

import org.assertj.core.api.Assertions;
import net.javacrumbs.jsonunit.JsonAssert;
import org.json.JSONObject;
import org.junit.jupiter.api.Test;

public class JsonUnitTestExample {

    @Test
    void testJsonEquality() {
        String expectedJson = "{\"name\":\"John Doe\",\"age\":30,\"city\":\"New York\"}";
        String actualJson = "{\"age\":30,\"city\":\"New York\",\"name\":\"John Doe\"}";

        JsonAssert.assertEquals(expectedJson, actualJson); //Order doesn't matter with JsonUnit
        //Alternatively, using AssertJ for more descriptive failure messages:
        Assertions.assertThat(JsonAssert.jsonObject(expectedJson)).isEqualTo(JsonAssert.jsonObject(actualJson));
    }


    @Test
    void testJsonPartialEquality() {
        String expectedJson = "{\"name\":\"John Doe\",\"age\":30,\"city\":\"New York\",\"country\":\"USA\"}";
        String actualJson = "{\"name\":\"John Doe\",\"age\":30}";

        // Using JsonUnit's ignoring strategy
        JsonAssert.assertEquals(expectedJson, actualJson, (node1, node2) -> node1.getNodeName().equals("country"));

        // Alternatively, using AssertJ with JsonUnit's ignoring functionality within a custom comparator
        // This gives more control and potentially better error messages
        Assertions.assertThat(JsonAssert.jsonObject(actualJson)).usingComparator(JsonAssert.when(
            (node1, node2) -> node1.getNodeName().equals("country")
        )).isEqualTo(JsonAssert.jsonObject(expectedJson));
    }

    @Test
    void testJsonWithAssertJAssertions(){
        JSONObject expectedJson = new JSONObject("{\"name\":\"John Doe\",\"age\":30}");
        JSONObject actualJson = new JSONObject("{\"name\":\"John Doe\",\"age\":30}");

        Assertions.assertThat(JsonAssert.jsonObject(actualJson).toString()).isEqualTo(expectedJson.toString());
        // Or using JsonUnit's direct comparison
        JsonAssert.assertEquals(expectedJson, actualJson);
    }

}
Salin selepas log masuk

pom.xml memanfaatkan jsonunit untuk perbandingan khusus JSON:

Gunakan

untuk membandingkan seluruh struktur JSON atau bahagiannya. Jsonunit mengendalikan kerumitan perbandingan JSON secara automatik, termasuk ketergantungan pesanan. Ini meningkatkan kebolehbacaan ujian anda dan memberikan mesej ralat yang lebih bermaklumat apabila pernyataan gagal. Ini membolehkan anda mengikat pernyataan menegaskan tambahan jika diperlukan. Ini memberikan kawalan halus ke atas proses perbandingan. Persediaan, pelaksanaan, dan fasa penegasan.
  1. Mengabaikan terlalu banyak bidang: Semasa mengabaikan bidang berguna, secara berlebihan mengabaikan mereka melemahkan keupayaan ujian untuk mengesahkan ketepatan struktur JSON. Berusaha untuk keseimbangan antara fleksibiliti dan ketelitian. Jsonunit umumnya mengendalikan perbezaan dalam pemformatan, tetapi ketidakkonsistenan boleh menyebabkan kekeliruan. Jsonunit mengendalikan perbezaan jenis sedikit sebanyak, tetapi percanggahan yang ketara boleh menyebabkan kegagalan yang tidak dijangka. Leverage keupayaan AsseCrentJ untuk memberikan mesej ralat yang kaya dan konteks yang kaya. Pengubahsuaian. Repositori GitHub Projek mengandungi contoh dalam ujian dan dokumentasinya. Periksa ini untuk aplikasi praktikal. Baeldung, Medium, dan blog pemaju lain. Sumber-sumber ini sering memberikan contoh praktikal dan coretan kod.
  2. Projek-projek sumber terbuka: meneroka projek sumber terbuka yang menggunakan jsonunit dan menegaskan untuk ujian unit JSON. Menganalisis strategi ujian mereka boleh mendedahkan amalan terbaik yang berharga. Lihatlah projek -projek yang menggunakan Java dan Junit (atau kerangka ujian yang serupa) untuk mencari contoh yang relevan.

Atas ialah kandungan terperinci Contoh Ujian Unit Jsonunit Ass AssquentJ JSON. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan