Tôi tái cấu trúc code mà không đổi hành vi — một test xanh, một test đỏ. Đỏ mới là test viết sai
Một phép thử cho thấy verify quá tay biến test thành xi măng, mock trả gì khi chưa khai báo, ArgumentCaptor, spy, và những chỗ tuyệt đối không nên mock.
Một phép thử cho thấy verify quá tay biến test thành xi măng, mock trả gì khi chưa khai báo, ArgumentCaptor, spy, và những chỗ tuyệt đối không nên mock.
Vòng đời JUnit 5 in ra bằng số thật (mỗi test một đối tượng mới, thứ tự không theo khai báo), ba dòng test theo tham số thay cho mười một, và khác biệt giữa thông báo lỗi hữu ích với thông báo chẳng nói gì.
Đo cùng một dự án 300 lớp trên Maven và Gradle: chỗ Gradle thật sự nhanh hơn (và chỗ không), vì sao build lại của Maven chậm hơn build sạch, và một khác biệt chọn phiên bản khiến hai bên chạy hai thư viện khác nhau mà không báo.
Vòng đời build thực sự chạy những gì, năm phạm vi phụ thuộc và classpath tương ứng, và vì sao thứ tự khai báo lại lặng lẽ quyết định phiên bản bạn chạy.
Dựng microbenchmark sai rồi đối chiếu với JMH: loại bỏ mã chết, gấp hằng số, thiếu làm nóng, nhiễm bẩn giữa các phép đo. Ba cái không xảy ra như sách vở nói — còn cái cắn thật lại là chuyện đo đúng con số rồi kể sai câu chuyện.
Đo chi phí thật của JDK Flight Recorder, hồ sơ cấp phát chỉ ra 303MB Integer từ một phép đóng hộp giấu trong dấu ngoặc, và vì sao async-profiler thấy được cả GC lẫn JIT mà JFR không thấy.