Thứ Ba, 13 tháng 2, 2018

Cố gắng viết unit test cho các class của bản thân

- Unit test sẽ giúp tìm ra lỗi của chương trình mình viết.
- Cố gắng viết unit test cover hết các main feature trong chương trình.
Vì nhờ vậy có khi mình lại khám phá ra vài lỗi tìm ẩn khác trong các đoạn code xử lý.
- Với những ví dụ đơn giản như implementation Stack trong java thì khả năng code lỗi vẫn có.
Ví dụ sau đây sẽ cho thấy:

Chủ Nhật, 27 tháng 8, 2017

Stupid mistake with jpa cache

Mất vài ngày để ngâm cứu một lỗi thật là vớ vẩn chỉ vì không test kỹ với real data trong mysql database.
Cụ thể là tình huống như sau.
 @Test
 @Transactional
 public void testCache(){
  EntityManagerFactory emf = postDAOJpa.getEntityManager().
getEntityManagerFactory();
  Cache cache = emf.getCache();
  
  Post post = postDAOJpa.find(12L);
  assertTrue(post!=null && post.getId()>0);
  if(!cache.contains(Post.class, post.getId())){
   fail("cache does not contain");
  }
  post = postDAOJpa.find(post.getId());
  Post postInsert = createPost();
  postDAOJpa.save(postInsert);
  post = postDAOJpa.find(postInsert.getId());
  assertTrue(postInsert!=null && postInsert.getId()>0);
  if(!cache.contains(Post.class, post.getId())){
   fail("cache does not contain post which is inserted in the same transaction");
  }
  
 }
test fail:cache does not contain with post insert in the same transaction.
Vấn đề là mãi sau này, mình mới test thử với dữ liệu thật thì thấy cache hoặc động bình thường.
Còn với data chỉ có trên grid data phase, thì cache sẽ bị fail.

Quả thật là kinh nghiệm xương máu. Mất khoảng vài ngày cho cái lỗi. :(:(
Cũng vui vì cuối cùng cũng solved problem.

Thứ Hai, 1 tháng 8, 2016

Bắt đầu viết blog

       Đại khái là lập ra một trang blog để lưu lại những sự kiện đã trải qua. Có thể là về các vấn đề technical, work, love... Cứ tập tành viết ra cái gì đó để nâng cao khả năng viết lách một tí. Hoặc lưu lại các kinh nghiệm làm việc để sau này tránh bớt "ngu" hơn xưa.

Thân!