2012-02-28 27 views

Trả lời

16

Jan Berkel đã gửi a pull request cho Robolectric đã được hợp nhất thành chính vào ngày 8 tháng 3. Bây giờ bạn có thể gọi số Robolectric.getFakeHttpLayer().interceptHttpRequests(false); khi bắt đầu thử nghiệm để bỏ qua lớp http được giả mạo trong Robolectric.

Bạn có thể tải xuống bình trực tiếp từ Sonatype để đưa vào dự án Android Eclipse của mình. Nếu bạn đang sử dụng Maven và 1.1 chưa được phát hành (hãy kiểm tra tại địa chỉ Sonatype ở trên) thì bạn sẽ cần thêm repo hình ảnh sonatype và sử dụng robolectric 1.1-SNAPSHOT. Bạn có thể thực hiện việc này bằng cách thêm thông tin sau vào pom.xml của mình

<repositories> 
    <repository> 
     <id>sonatype-snapshots</id> 
     <name>Sonatype Snapshots</name> 
     <layout>default</layout> 
     <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
... 
<dependencies> 
    <dependency> 
     <groupId>com.pivotallabs</groupId> 
     <artifactId>robolectric</artifactId> 
     <version>1.1-SNAPSHOT</version> 
     <scope>test</scope> 
    </dependency> 
    ... 
</dependencies> 

Tôi đang sử dụng tính năng này để kiểm tra tích hợp chạy trên máy chủ thực và nó hoạt động tốt.

+0

:) cảm ơn bạn rất nhiều –

3

Về cơ bản thì không. Robolectric là một khung kiểm tra và đây là cách nó được thiết kế để hoạt động, những gì bạn hỏi không phải là những gì chúng tôi làm với Robolectric.

Tôi chắc chắn bạn đã vượt qua this blog về việc sử dụng các yêu cầu HTTP kiểm tra Robolectric. Trên thực tế, tiêu đề "Cách kiểm tra yêu cầu HTTP" không phải là IMO khá chính xác. Tôi muốn gọi nó là "Cách giả lập các yêu cầu HTTP", như đã nêu trong blog này, nơi tốt nhất để sử dụng yêu cầu giả lập Robolectric http là nơi bạn không thực sự muốn thực hiện các cuộc gọi mạng thực sự đến máy chủ từ xa. /giai đoạn thử nghiệm.

Giả sử tôi có hoạt động chính kết nối với tài khoản ngân hàng của mình để thực hiện một số thao tác, nút gửi sẽ đăng thông tin đầu vào của tôi lên máy chủ từ xa cập nhật thông tin tài khoản của tôi, sau đó dựa trên các phản hồi khác nhau. Tôi đã viết tất cả các mã trơn tru, HttpClient, hình thức với nút gửi, ý định mới để hoạt động tiếp theo, vv tất cả đều đẹp và sạch sẽ. Đúng, làm cách nào tôi có thể kiểm tra khi nút nhấp gửi, hoạt động thích hợp được mở dựa trên các phản hồi khác nhau, mà không cần thay đổi mã nguồn Hoạt động của tôi hoặc sử dụng cuộc gọi mạng thực để vít tài khoản ngân hàng thực của tôi. Câu trả lời là yêu cầu giả lập Robolectric http. Điểm mấu chốt của việc sử dụng Robolectric trong trường hợp này không phải là để thử nghiệm yêu cầu http thực, thay vào đó, nó được sử dụng để đánh lừa mã httpClient của tôi và kiểm tra một phần khác của mã ứng dụng của tôi như giao diện người dùng. Cuối cùng, kiểm tra mạng thực phải được thực hiện trên trình giả lập hoặc thiết bị thực ở một số giai đoạn khi triển khai của bạn đến trạng thái ổn định cuối cùng.

Một lợi thế khác được nhóm Robolectirc xác nhận là bạn không cần thử nghiệm thiết bị bắt đầu trên trình giả lập hoặc thiết bị, đó là chu trình phát triển/kiểm tra ứng dụng không hiệu quả và chậm.

+0

Tôi biết về http mô phỏng và rất hữu ích khi kiểm tra thông tin đăng nhập phụ thuộc vào nhà cung cấp oauth mà tôi không có quyền kiểm soát. Nhưng khi tôi muốn thử nghiệm dịch vụ mặt tiền của mình vô nghĩa của nó để giả lập mọi yêu cầu bởi vì tôi có máy chủ thử nghiệm cục bộ chạy anyways và thiết lập dữ liệu chính xác. Vì vậy, những gì tôi muốn làm là một thử nghiệm tích hợp với yêu cầu thực tế tại một số điểm và tại một điểm khác (đăng nhập) tôi muốn sử dụng fakehttpclient được cung cấp bởi robolectric –

+0

@Felix, Từ kinh nghiệm của riêng tôi, tôi sử dụng Robolectric JUnit Test và Android Instrumentation Test (thông qua Test Project) cùng nhau. Để kiểm tra yêu cầu http thực, chỉ đơn giản là không sử dụng Robolectric. – yorkw

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