2010-09-11 20 views
6

Tôi đang sử dụng Spring 3.0.4 và JUnit 4.5. các lớp học thử nghiệm của tôi hiện đang sử dụng hỗ trợ kiểm tra chú thích Spring với cú pháp sau:Mùa xuân 3+ Cách tạo TestSuite khi JUnit không nhận ra nó

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration (locations = { "classpath:configTest.xml" }) 
@TransactionConfiguration (transactionManager = "txManager", defaultRollback = true) 
@Transactional 
public class MyAppTest extends TestCase 

{ 
@Autowired 
@Qualifier("myAppDAO") 
private IAppDao appDAO; 
    ... 
} 

Tôi không thực sự cần dòng mở rộng TestCase để chạy thử nghiệm này. Không cần thiết khi chạy lớp thử nghiệm này một mình. Tôi đã có thêm mở rộng TestCase để tôi có thể thêm nó vào một lớp TestSuite:

public static Test suite() { 
     TestSuite suite = new TestSuite("Test for app.dao"); 
    //$JUnit-BEGIN$ 
    suite.addTestSuite(MyAppTest.class); 
     ... 

Nếu tôi bỏ qua mở rộng TestCase, Test Suite tôi sẽ không chạy. Eclipse sẽ gắn cờ suite.addTestSuite (MyAppTest.class) là lỗi.

Làm cách nào để thêm lớp thử nghiệm Spring 3+ vào Suite thử nghiệm? Tôi chắc chắn có một cách tốt hơn. Tôi đã GOOGLED và đọc tài liệu. Nếu bạn không tin tôi, tôi sẵn sàng gửi cho bạn tất cả các dấu trang của tôi làm bằng chứng. Nhưng trong mọi trường hợp, tôi muốn có một câu trả lời mang tính xây dựng. Cảm ơn rất nhiều.

+0

LOL. Tôi googled một lần nữa và thấy câu hỏi của tôi trên các kết quả của Google. Tôi sẽ tìm kiếm lần nữa :) – chris

+1

Bản thân Rod Johnson đã viết: "Bản thân Spring có một bộ kiểm tra đơn vị xuất sắc" (http://www.theserverside.com/news/1363858/Introduction-to-the-Spring-Framework). Bộ thử nghiệm tuyệt vời này được viết ở đâu? – chris

+0

Url bạn đã cung cấp không hoạt động! – adranale

Trả lời

6

Bạn đã đúng; kiểm tra Junit4 kiểu không nên mở rộng junit.framework.TestCase

Bạn có thể bao gồm một thử nghiệm Junit4 như một phần của một bộ JUnit3 theo cách này:

public static Test suite() { 
    return new JUnit4TestAdapter(MyAppTest.class); 
} 

Thông thường, bạn sẽ thêm phương pháp này để lớp MyAppTest. Sau đó bạn có thể thêm xét nghiệm này để bộ lớn hơn của bạn:

public class AllTests { 
    public static Test suite() { 
    TestSuite suite = new TestSuite("AllTests"); 
    suite.addTest(MyAppTest.suite()); 
    ... 
    return suite; 
    } 
} 

Bạn có thể tạo một bộ Junit4 kiểu bằng cách tạo ra một lớp chú thích với Suite

@RunWith(Suite.class) 
@SuiteClasses({ AccountTest.class, MyAppTest.class }) 
public class SpringTests {} 

Lưu ý rằng AccountTest có thể là một thử nghiệm Junit4 kiểu hoặc thử nghiệm kiểu JUnit3.

+0

Cảm ơn rất nhiều. Tôi đã thử đề xuất đầu tiên của bạn và nó đã hoạt động! Tôi đã mong đợi mùa xuân có bộ thử nghiệm riêng của mình như được viết bởi Rod Johnson. Nhưng có lẽ anh ta có ý nghĩa khác. – chris

+0

Sự cố được giải quyết. – chris

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