2011-10-29 32 views
7

Tôi không chắc chắn "kiểm tra vô hướng" là thuật ngữ chính xác cho nó nhưng tôi có nghĩa là thử nghiệm không phải là boolean "thất bại hoặc thành công". Vấn đề tôi đang làm việc trên là một bộ chỉnh màu sắc cho android:Làm thế nào để kiểm tra vô hướng với android?

http://code.google.com/p/androidtuner/

Và Tôi muốn thử nghiệm các thuật toán bằng cách chạy một vài file wav và chế biến đồ thị sân kết quả. Mục đích là để xác định kết quả kiểm tra vô hướng như là một x-trừ-y bình phương-tổng bình thường trong đó x là sân phát hiện và y là sân dự kiến. Vì vậy, một chạy thử nghiệm hoàn hảo sẽ là 0 nhưng thực tế hơn tôi muốn tinh chỉnh thuật toán và xem liệu/cách nó được cải thiện trên tất cả các trường hợp thử nghiệm.

Nói chung - kết quả kiểm tra đơn vị có thể là một số chứ không phải là boolean không? Khung thử nghiệm android có cho phép không? Tôi nên tích hợp bất kỳ giải pháp nào với Eclipse?

Ý tưởng hiện tại của tôi là chỉ phá vỡ mọi thứ và sử dụng adb để tìm nạp các tệp được tạo sau khi chạy từng thử nghiệm. Mặc dù đó không phải là quá tuyệt vời.

Trả lời

1

Nó đánh tôi rằng thử nghiệm đơn vị là công cụ sai cho công việc bạn đang giải quyết ở đây. Theo bản chất của họ, các khung kiểm thử đơn vị được thiết kế để tạo ra các kết quả đúng/sai.

Nếu tất cả những gì bạn đang muốn làm là tạo một số chỉ số bằng cách thử nghiệm, hãy gọi thuật toán của bạn với dữ liệu đầu vào khác nhau bạn có thể muốn cân nhắc viết lớp con Instrumentation của riêng mình. Đây là những gì Android chính nó sử dụng để chạy các bài kiểm tra đơn vị của bạn trên thiết bị.

An Instrumentation sẽ cho phép bạn gọi các dịch vụ/hoạt động của mình với bất kỳ bộ dữ liệu nào bạn cần và bạn có thể tạo kết quả Bundle để tóm tắt kết quả.

Ngoài ra, bạn có thể gọi một thiết bị từ ADB, giống như một bộ các trường hợp thử nghiệm.

0

Tôi nghĩ, bạn có thể làm cho nó với các feautures mới của JUnit4.

Viết Rule thực thi @Before và @After mỗi lần: JUnit Kungfu slide 34

Viết một thử nghiệm tham số để tính toán kết quả: JUnit Kungfu slide 23

Nếu bạn làm việc với bảng tính, bạn có thể điền vào bảng tính của bạn với các giá trị như hiện tại có giá trị; dự kiến-min; dự kiến-max

import static org.hamcrest.MatcherAssert.*; 
import static org.hamcrest.Matchers.*; 
import static org.junit.matchers.JUnitMatchers.*; 

import java.util.Arrays; 
import java.util.Collection; 

import org.hamcrest.Matchers; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.junit.runners.Parameterized; 
import org.junit.runners.Parameterized.Parameters; 

@RunWith(Parameterized.class) 
public class ParameterizedTest { 

    private final int min; 
    private final int max; 
    private final int current; 


    @Parameters 
    public static Collection<Object[]> data() { 
     return Arrays.asList(new Object[][] { 
      { -1 , -10, -6 }, 
      { -2 , -11, -7 }, 
      { -3 , -12, -8 }, 
      { -4 , -13, -9 }, 
      { -5 , -14, -10 } 
     }); 
    } 

    public ParameterizedTest(int current, int expectedMin, int expectedMax) { 
     this.current = current; 
     this.min = expectedMin; 
     this.max = expectedMax; 

    } 


    @Test 
    public void testName() throws Exception { 
     int yourNewValue = YourNormalizer.normalize(current); 
     assertThat(yourNewValue, both(greaterThan(min)).and(lessThanOrEqualTo(max))); 
    } 
} 

tôi không biết cách nào khác để kiểm tra dat a. HF

+0

Điều đó có vẻ như một cách hay để nhập dữ liệu. Nhưng các thử nghiệm vẫn dẫn đến thành công hay thất bại. – ubershmekel

0

Kiểm thử đơn vị không thực sự phù hợp trong trường hợp này. Kết quả của một bài kiểm tra đơn vị là vượt qua/thất bại, vì vậy bạn sẽ cần phải thiết lập một ngưỡng (lề lỗi) xác định đường chuyền là gì. Điều này tạo ra một số kết quả, tức là bạn có thể so sánh số lần truyền/hỏng giữa các lần chạy, nhưng bạn cũng mất khá nhiều thông tin trong quá trình này.

Tôi khuyên bạn chỉ nên ghi nhật ký kết quả vô hướng vào tệp CSV và tải sau lên bảng tính. Bạn thậm chí có thể làm điều đó từ bên trong các bài kiểm tra đơn vị.

Ngoài việc này, tôi không thể nghĩ ra một khuôn khổ thực hiện chính xác những gì bạn cần.

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