2015-05-29 20 views
6

Tôi có một dự án gradle với 3 mô-đun sử dụng khởi động mùa xuân. 3 ứng dụng khởi động mùa xuân này đang chạy song song và tương tác với nhau.Có thể chạy thử nghiệm tích hợp trên nhiều ứng dụng khởi động mùa xuân cùng một lúc không?

Ví dụ: MODULE1 lưu dữ liệu trong MODULE2 và MODULE3 truy xuất dữ liệu từ MODULE2 thông qua API Rest.

Tôi muốn thực hiện các kiểm tra tích hợp liên quan đến tương tác giữa 3 ứng dụng khởi động mùa xuân này (nghĩa là mỗi ứng dụng chạy riêng trên một cổng khác). Có thể không? làm sao?

Tôi biết chúng tôi có thể làm điều đó cho một ứng dụng khởi động mùa xuân. (as explained here)

+0

Tôi đã cố gắng làm điều gì đó tương tự nhưng không thể. Tôi đã thử sử dụng plugin spring-boot-maven để khởi động ứng dụng khởi động và sau đó chạy thử nghiệm từ một mô-đun khác như một phần của giai đoạn thử nghiệm tích hợp. Tuy nhiên, ứng dụng khởi động không chạy trong một chuỗi riêng biệt nên việc xây dựng chỉ bị kẹt. Tôi đã thử plugin maven-exec một lần nữa với cùng một vấn đề. Không chắc chắn nếu có bất cứ điều gì trong gradle. – jrao77

+0

Bạn không thể sử dụng các tác vụ 'JavaExec' và' Exec' vì chúng luôn chờ quá trình kết thúc. Những gì bạn cần là một nhiệm vụ tùy chỉnh sử dụng 'ProcessBuilder'. – Opal

+0

** process-exec-maven-plugin ** có thể là một lựa chọn tốt để thực hiện thử nghiệm tích hợp của nhiều ứng dụng khởi động mùa xuân: Bạn có thể xem xét giải pháp thử nghiệm của mình cho http://stackoverflow.com/a/37397777 đó/2745810 – kmarabet

Trả lời

1

Bạn đã bao giờ xem xét sử dụng Docker chưa? Giống như bạn tôi đã có vấn đề cố gắng để làm điều này và giải pháp hiện tại của tôi là sử dụng docker-compose để đứng lên một container cho mỗi ứng dụng. Tôi chạy mỗi ứng dụng khởi động mùa xuân trong một container đơn giản (chẳng hạn):

FROM openjdk:8-jdk-alpine 

VOLUME /tmp 
ADD target/module1.jar app.jar 
ENV JAVA_OPTS="" 
ENTRYPOINT exec java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar 

Sau đó, tôi sử dụng Docker-soạn thư để đặt nó tất cả cùng nhau:

version: '3' 
services: 
    module1: 
    build: ./path/to/module1/Dockerfile 
    ports: 
    - "8080:8080" 
    links: 
    - module2 
    module2: 
    build: ./path/to/module2/Dockerfile 
    ports: 
    - "8081:8081" 

Xin lưu ý rằng tôi đã không kiểm tra bất kỳ cấu hình nào này vì tôi không có trên một máy tính vừa rồi và tôi đã đơn giản hóa cấu hình cho những gì tôi nghĩ là tối thiểu.

Các vấn đề liên quan