2011-11-16 37 views
5

Khi CodePro tự động tạo ra các bài kiểm tra cho các phương pháp của tôi, nó thường tạo ra các bài kiểm tra giống hệt nhau:Tại sao google CodePro tạo ra các kiểm tra JUnit giống hệt nhau?

/** 
* Run the String getCategoryID() method test. 
* 
* @throws Exception 
* 
* @generatedBy CodePro at 17/11/11 11:44 AM 
*/ 
@Test 
public void testGetCategoryID_1() 
    throws Exception { 
    Category fixture = new Category(""); 

    String result = fixture.getCategoryID(); 

    // add additional test code here 
    // An unexpected exception was thrown in user code while executing this test: 
    // java.lang.NullPointerException 
    //  at java.io.StringReader.<init>(StringReader.java:33) 
    //  at xpath.XPathRunner.<init>(XPathRunner.java:23) 
    //  at trademefacade.Category.retrieveCategoryID(Category.java:95) 
    //  at trademefacade.Category.getCategoryID(Category.java:68) 
    assertNotNull(result); 
} 

/** 
* Run the String getCategoryID() method test. 
* 
* @throws Exception 
* 
* @generatedBy CodePro at 17/11/11 11:44 AM 
*/ 
@Test 
public void testGetCategoryID_2() 
    throws Exception { 
    Category fixture = new Category(""); 

    String result = fixture.getCategoryID(); 

    // add additional test code here 
    // An unexpected exception was thrown in user code while executing this test: 
    // java.lang.NullPointerException 
    //  at java.io.StringReader.<init>(StringReader.java:33) 
    //  at xpath.XPathRunner.<init>(XPathRunner.java:23) 
    //  at trademefacade.Category.retrieveCategoryID(Category.java:95) 
    //  at trademefacade.Category.getCategoryID(Category.java:68) 
    assertNotNull(result); 
} 

Đây là những thử nghiệm về phương pháp sau:

public String getCategoryID() throws IOException, 
     NoCategoryMatchException { 
    categoryID = retrieveCategoryID(); 
    if (categoryID.equals("")) { 
     throw new NoCategoryMatchException(); 
    } 
    return categoryID; 
} 

Tôi có sử dụng CodePro sai? Tôi nghĩ rằng nhiều thử nghiệm là gợi ý cho tôi để thực hiện hai bài kiểm tra, nhưng bất cứ khi nào tôi tùy chỉnh các bài kiểm tra, họ chỉ được viết lại khi CodePro tái tạo các bài kiểm tra.

+0

Bạn có thể đăng mã cho những thử nghiệm này không? –

+0

Xin lỗi vì đã trì hoãn. – Kevin

Trả lời

2

Tôi không biết CodePro tốt, nhưng nhìn vào JUnit Test Case Generation - Execution:

Để xác định kết quả mong đợi của một phương pháp mục tiêu, tạo mã thực rằng phương pháp. Các thực thi CodePro> JUnit> Test Execution kiểm soát phản ứng của trình tạo mã khi thực hiện của một phương thức ném một ngoại lệ.

trông giống như mã của bạn đã được thực hiện bởi CodePro nhưng nó được ném một NullPointerException, có lẽ vì các thiết lập không được thực hiện một cách chính xác?

CodePro đang tạo hai trường hợp kiểm tra vì mã có hai đường dẫn qua nó, nhưng NullPointerException có nghĩa là mã kiểm tra khác nhau không được tạo.

Tôi không hiểu đầy đủ về các cơ chế liên quan, nhưng hãy thử thay thế phương thức retrieveCategoryId() bằng phương thức chỉ trả về "" và tạo lại phép thử. Nếu điều này làm việc, thì đó là vấn đề. Tôi sẽ không biết giải pháp là gì. Hãy thử trên các diễn đàn cho google codepro.

0

nếu bạn muốn tùy chỉnh các thử nghiệm của mình và ngăn chúng không được viết lại, hãy xóa thẻ @generatedBy. Đó là một gợi ý cho trình tạo mã mà nó sở hữu phương thức đó và có thể viết lại nó nếu cần.

0

Có thể có nhiều phương pháp thử nghiệm để kiểm tra một trong các phương pháp của bạn. GooglePro đang cố gắng tạo ra các giá trị khác nhau cho các đối số của phương thức của bạn và sau đó tạo một phương thức thử nghiệm với các kết hợp của các giá trị đó.

Bạn có thể (tự động) tạo các lớp nhà máy để giúp GooglePro nhận được các giá trị đó. Trong trường hợp của bạn nếu nó không tìm thấy bất kỳ, nó sẽ điền các phương thức với các giá trị "" cho các chuỗi và Danh mục mới ("") bởi vì bạn không sử dụng một lớp nhà máy.

Bạn có thể hạn chế số lượng phương pháp thử nghiệm mỗi phương pháp trong Window> Preferences> codePro> Junit> Phương pháp> Tạo tại hầu hết các

Có thông tin chi tiết tại đây. JUnit Test Case Generation

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