2012-02-23 15 views
8

Tôi hiện đang cố gắng tích hợp Spring vào bài kiểm tra dưa chuột của mình. Tôi có một SpringFactory tùy chỉnh như được nêu trong:Cách tích hợp Spring vào Dưa chuột

http://www.zsoltfabok.com/blog/2012/01/cucumber-jvm-di/

nhưng mã không được gọi. Cách tốt nhất để 'kết thúc' nhà máy với các thử nghiệm của tôi là gì?

[Làm rõ từ nhận xét về câu trả lời đã xóa: vấn đề chính là thử nghiệm của tôi có dưa chuột là nhân vật chính, tức là @RunWith (Cucumber.class) vì vậy không thể sử dụng SpringJUnit4ClassRunner tại đây. Điều này được mô tả trong liên kết ở trên nhưng không có mô tả về cách đọc cucumber.xml. Tôi đã thêm một SpringFactory mới nhưng nó isnt đọc các tập tin XML ....]

Cập nhật: Thực ra tôi đã có thêm một chút bằng cách thêm: biến

<dependency> 
     <groupId>info.cukes</groupId> 
     <artifactId>cucumber-spring</artifactId> 
     <version>1.0.0.RC15</version> 
    </dependency> 

Tuy nhiên, tôi đã @Autowired mà không phải là được tiêm khi thử nghiệm đang được điều hành bởi Cucumber.

Có ai khác có vấn đề này không?

Trả lời

5

Tìm kiếm nhanh Google cho "tích hợp mùa xuân dưa chuột" mang đến cho tôi herehere. Nếu bạn đang sử dụng cuke4duke, điều này có vẻ như là một cách đơn giản hơn nhiều.

Mẫu có vẻ như cho biết, theo mặc định, cuke4duke sẽ tải cucumber.xml từ chân đường dẫn lớp của bạn. Đây là tệp cấu hình Spring phải bao gồm một component-scan cho các lớp được chú thích với @StepDefinition.

Bạn sẽ không cần phải cung cấp SpringFactory, bạn sẽ không cần sử dụng chú thích @RunWith, chỉ cần cung cấp một số cấu hình Spring và một hoặc nhiều thuộc tính jvm.

+0

Nó hoạt động! Dưới đây là một số điểm bổ sung có giải pháp của tôi làm việc: 1. Không sử dụng phụ thuộc moi picocontainer 2. Sử dụng thêm cập nhật @StepDefAnnotation trên lớp bước để quét thành phần của bạn. – Reimeus

1

Tôi vừa xem câu hỏi của bạn. Có lẽ hầu hết phụ thuộc module cucumber-spring bị thiếu. Tôi đã cập nhật các kho lưu trữ và bây giờ tất cả các phụ thuộc nên được tốt (tôi đang sử dụng ivy).

9

Cập nhật: Dự án cuke4duke hiện đã lỗi thời và đã được thay thế bằng Cucumber-JVM.

Tôi cũng có cùng một vấn đề và nguyên nhân gốc rễ là cucumber.xml không được SpringFactory đọc trong dưa chuột-mùa xuân-1.1.5.jar. Spring DI thất bại âm thầm dẫn đến NPE. Kể từ submission 448, dưa chuột SpringFactory không còn tải cucumber.xml và bạn được yêu cầu bao gồm @ContextConfiguration("classpath*:cucumber.xml") trong TẤT CẢ các lớp định nghĩa bước của bạn.

-1

Vấn đề là một số phiên bản của Spring chỉ hoạt động với một số phiên bản nhất định của dưa chuột-mùa xuân và dưa chuột-JVM. Tìm sự kết hợp chiến thắng có thể mất hai ngày không quan trọng với các phiên bản jar. Vì vậy, bắt đầu với một kịch bản BDD "Hello World" sử dụng tiêm đơn giản mà bạn biết sẽ hoạt động, bởi vì bạn sẽ cần phải tinh chỉnh các lọ đó cho đến khi bạn nhận được một môi trường hoạt động.

Cách dễ nhất là khớp phiên bản Spring mới nhất với phiên bản mới nhất của Cucumber-Spring. Các phiên bản mới của Spring được hỗ trợ tốt hơn. Nếu bạn không thể đơn giản nâng cấp mùa xuân của mình, hãy sử dụng các trang web mô tả các phụ thuộc maven giữa các phiên bản khác nhau của Cucumber-Spring và phiên bản Spring bạn đang làm việc.

Nếu bạn muốn gắn bó với phiên bản cũ của mình của Spring (ý tưởng tồi, nỗi đau thay đổi sẽ chỉ phát triển tệ hơn) một chiến lược khác là sử dụng JBehave để kiểm tra BDD.