2011-12-14 12 views
5

Tôi đã thừa kế một codebase lớn C++ với một số thử nghiệm tích hợp. Đây là một hệ thống quan trọng cung cấp dữ liệu cho rất nhiều hệ thống hạ nguồn. Vì các bài kiểm tra rất không đáng tin cậy nên nhóm của chúng tôi không thể tự tin thay đổi.Đơn vị kiểm tra mã C++ bằng cách sử dụng Java

Chúng tôi muốn giới thiệu một số thử nghiệm trong hệ thống nhưng hầu hết các nhà phát triển đều có nền Java. Chúng ta có những lựa chọn nào?

1) Tìm hiểu C++

2) Sử dụng JNI: Không chắc cách dễ dàng đó là

+1

Đối với hồ sơ: 1 là một tập con của 2. Bạn sẽ học C++ cho dù thế nào đi chăng nữa. –

+0

3) vì đó là các kiểm thử tích hợp, có thể gọi mã C++ là một quá trình riêng biệt, cấp dữ liệu thử nghiệm và xem kết quả đầu ra là gì – Thilo

+0

Bạn đã cân nhắc sử dụng JNA chưa? Nó chậm hơn JNI, nhưng bạn có thể gọi phương thức C++ mà không cần viết bất kỳ mã C++ nào. –

Trả lời

2

Sử dụng JNI thêm một lớp phức tạp và bạn vẫn sẽ học C++ - Tôi sẽ không khuyên bạn nên nó nếu bạn không muốn sử dụng C++.

Tùy thuộc vào hệ thống C++ bạn có thể chọn các chiến lược thử nghiệm khác nhau. Theo kinh nghiệm của tôi, tôi có một hệ thống chịu trách nhiệm xử lý dữ liệu và tất cả dữ liệu được gửi qua mạng. Trong trường hợp này các cuộc thử nghiệm đã được thực hiện trong python:

  1. chúng tôi kiểm tra giao thức
  2. chúng tôi kiểm tra tính hợp lệ dữ liệu xử lý cho một đầu vào nhất định (còn kiểm soát trong python)

trường hợp của tôi là một may mắn một kể từ khi giao tiếp được thực hiện thông qua kết nối mạng (chúng tôi có thể sử dụng bất kỳ ngôn ngữ nào chúng tôi muốn).

Nếu bạn không thể sử dụng bất cứ điều gì khác nhưng C++ tôi nghĩ bạn sẽ phải làm điều đó trong C++ (và không phải Java + JNI + C++).

+0

Tôi không may mắn: ( – NRS

0

Tôi khuyên bạn nên thử JNA không yêu cầu bạn phải viết mã C hoặc C++. Nó chậm hơn JNI, nhưng đối với các bài kiểm tra không có vấn đề gì.