2011-12-15 17 views
6

Đôi khi tôi gặp phải lỗi này khi chạy thử nghiệm JUnit.Có nghĩa là gì khi có một máy ảo Java chia hai?

Tôi không hỏi chính xác lỗi là gì. Tôi chỉ muốn biết những gì nó có nghĩa là khi java VM dĩa?

+0

Ngã ba theo nghĩa chung, thực hiện tác vụ jUnit trong một JVM khác. – CoolBeans

+4

Điều đó có nghĩa là bạn đã chia đôi ... – Paul

+0

@Paul - lol ... – CoolBeans

Trả lời

19

Một "máy ảo chia hai" không phải là lỗi (mặc dù lỗi bạn nhận được có thể liên quan đến nó).

Một số công cụ có liên quan đến các khía cạnh khác nhau của việc biên dịch và thử nghiệm (ví dụ: Maven) được viết bằng Java và sử dụng JVM để tự chạy.

Nếu bạn chạy thử nghiệm đơn vị cho ứng dụng của bạn mà không cần giả mạo VM, Maven sẽ chạy các kiểm tra đó trong cùng một máy ảo như Maven đang chạy. Do đó, nó có thể bị ảnh hưởng bởi một số cài đặt trên toàn bộ máy ảo (ví dụ: một số thuộc tính hệ thống).

Để tránh các tác dụng phụ do Maven, có thể chạy các thử nghiệm trong máy ảo chia hai, tức là, trong một máy ảo hoàn toàn riêng biệt chạy như một quy trình khác trong hệ điều hành.

(Điều này có thể áp dụng đối với các công cụ khác, Maven chỉ là một ví dụ.)

Đâm một VM chia hai ít nhất cho phép bạn quay trở lại ứng dụng Java khác mà bắt đầu và dàn những kiểm tra đơn vị. Nếu bạn đang chạy các thử nghiệm này trong cùng một máy ảo, bạn cũng sẽ làm hỏng ứng dụng đã khởi chạy các thử nghiệm của bạn (và do đó nhận được rất ít thông tin ngược lại).

2

'fork' is thuật ngữ được sử dụng trong Linux để biểu thị việc thực hiện một quá trình khác (lỏng lẻo). Trong trường hợp này, một máy ảo Java chia hai là một tiến trình con được sử dụng để cô lập các bài kiểm tra đơn vị của bạn theo lớp hoặc phương pháp, đảm bảo rằng không có ô nhiễm trạng thái nào xảy ra giữa nhiều bài kiểm tra.

Tác vụ kiến ​​JUnit hỗ trợ nhiều chế độ giả mạo có thể được xem here.

Tôi đã thấy các lỗi nêu rõ rằng máy ảo phân chia đã chết khi sử dụng JUnit. Điều này có nghĩa là thử nghiệm của bạn là bị lỗi và nhân vật JUnit của bạn (thường là kiến) không thể nhận được bất kỳ đầu ra nào.

Bạn nên cố gắng giải quyết nguyên nhân gây ra sự cố.