Tôi đang thu thập dữ liệu và lưu trữ dữ liệu này trong cơ sở dữ liệu MySQL bằng cách sử dụng Java. Ngoài ra, tôi sử dụng Maven để xây dựng dự án, TestNG như một khung kiểm thử và Spring-Jdbc để truy cập cơ sở dữ liệu. Tôi đã triển khai một lớp DAO bao bọc quyền truy cập vào cơ sở dữ liệu. Bên cạnh việc thêm dữ liệu bằng cách sử dụng các lớp DAO tôi muốn thực hiện một số truy vấn tổng hợp dữ liệu và lưu trữ các kết quả trong một số bảng khác (như các khung nhìn vật hoá).Cách thích hợp để kiểm tra mã sử dụng truy vấn cụ thể MySQL trong nội bộ
Bây giờ, tôi muốn viết một số testcases để kiểm tra xem các lớp DAO có hoạt động đúng như chúng không. Vì vậy, tôi đã nghĩ đến việc sử dụng một cơ sở dữ liệu trong bộ nhớ sẽ được phổ biến với một số dữ liệu thử nghiệm. Vì tôi cũng đang sử dụng các truy vấn SQL cụ thể cho MySQL để tổng hợp dữ liệu, tôi đã gặp một số rắc rối:
- Thứ nhất, tôi đã nghĩ đơn giản bằng chức năng cơ sở dữ liệu nhúng do Spring-Jdbc cung cấp để khởi tạo cơ sở dữ liệu nhúng . Tôi đã quyết định sử dụng H2. Ở đó, tôi gặp sự cố vì các truy vấn tổng hợp đang sử dụng nội dung cụ thể của MySQL (ví dụ: các hàm thao tác thời gian như DATE()). Một bất lợi của phương pháp này là tôi cần duy trì hai tập tin ddl - tệp ddl thực sự xác định các bảng trong MySQL (ở đây tôi xác định mã hóa và thêm nhận xét vào các bảng và cột, cả hai tính năng đều là MySQL cụ thể); và tệp ddl thử nghiệm xác định cùng một bảng nhưng không có nhận xét, vv vì H2 không hỗ trợ nhận xét.
- Tôi đã tìm thấy mô tả để sử dụng MySQL làm cơ sở dữ liệu được nhúng mà tôi có thể sử dụng trong các trường hợp kiểm tra (http://literatitech.blogspot.de/2011/04/embedded-mysql-server-for-junit-testing .html). Điều đó nghe có vẻ thực sự hứa hẹn với tôi. Thật không may, nó đã không làm việc: Một MissingResourceExcpetion xảy ra "Tài nguyên" 5-0-21/Linux-amd64/mysqld 'không tìm thấy ". Dường như trình điều khiển không thể tìm thấy trình nền cơ sở dữ liệu trên máy cục bộ của tôi. Nhưng tôi không biết mình phải tìm kiếm giải pháp nào cho vấn đề đó.
Bây giờ, tôi hơi bị kẹt và tôi tự hỏi liệu tôi có nên tạo kiến trúc khác đi không. Do ai đó có một số lời khuyên làm thế nào tôi nên thiết lập một hệ thống thích hợp? Tôi có hai tùy chọn khác trong đầu:
- Thay vì sử dụng cơ sở dữ liệu nhúng, tôi sẽ sử dụng cơ sở dữ liệu MySQL gốc và thiết lập cơ sở dữ liệu chỉ được sử dụng cho testcases. Tùy chọn này nghe chậm. Trên thực tế, tôi có thể muốn thiết lập một máy chủ CI sau này và tôi nghĩ rằng việc sử dụng một cơ sở dữ liệu nhúng sẽ thích hợp hơn kể từ khi chạy thử nghiệm nhanh hơn.
- Tôi xóa tất cả nội dung cụ thể của MySQL ra khỏi truy vấn SQL và sử dụng H2 làm cơ sở dữ liệu được nhúng để thử nghiệm. Nếu tùy chọn này là lựa chọn đúng, tôi sẽ cần phải tìm một cách khác để kiểm tra các truy vấn SQL tổng hợp dữ liệu thành các khung nhìn vật chất hóa.
- Hoặc có tùy chọn thứ 3 mà tôi không có trong tâm trí không?
Tôi sẽ đánh giá cao bất kỳ gợi ý nào.
Cảm ơn, XComp