2008-10-10 6 views
5

Tôi đã thực hiện một số kiểm tra đơn vị (trong lớp thử nghiệm). Các hướng dẫn tôi đã đọc nói rằng tôi nên thực hiện một TestSuite cho unittests. Số lẻ là khi tôi chạy thử nghiệm đơn vị trực tiếp (chọn lớp kiểm tra - Chạy như kiểm tra jUnit) mọi thứ đều hoạt động tốt, khi tôi đang thử cùng một điều với bộ kiểm tra, luôn có ngoại lệ: java.lang.Exception: Không có phương thức runnable nào.JUnit và junit.framework.TestSuite - Không có phương pháp chạy được nào

Đây là mã của bộ ứng dụng thử nghiệm:

import junit.framework.Test; 
import junit.framework.TestSuite; 

public class AllTests { 

public static Test suite() { 
    TestSuite suite = new TestSuite("Test suite for com.xxx.yyyy.test"); 
    //$JUnit-BEGIN$ 
    suite.addTestSuite(TestCase.class); 
    //$JUnit-END$ 
    return suite; 
    } 

} 

Bất cứ ý tưởng tại sao điều này không hoạt động?

Trả lời

5

Tôi không có kinh nghiệm về kiến ​​- vì vậy tôi không sử dụng nó để thử nghiệm ngay bây giờ.

Tìm kiếm trên internet có vẻ như tôi đang trộn lẫn hành vi jUnit 3.8 và jUnit 4.0 cũ. Đang cố gắng bây giờ là một cách để sử dụng các "hành vi mới"

chỉnh sửa:
bây giờ nó hoạt động:

AllTest đổi thành:

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 


@RunWith(value=Suite.class) 
@SuiteClasses(value={TestCase.class}) 
public class AllTests { 

} 

TestCase đổi thành:

import static org.junit.Assert.assertTrue; 
import org.junit.Test; 

public class TestCase { 
@Test 
    public void test1 { 
     assertTrue (tmp.getTermin().equals(soll)); 
    } 
} 
+0

Xin chào, tôi cũng làm như vậy tuy nhiên tôi gặp lỗi 'không thể chạy được ' – secret

0

Để chắc chắn, nó sẽ không hoạt động vì bạn không nói với bộ kiểm thử lớp học của bạn là gì.

Nhưng tôi tự hỏi tại sao bạn không sử dụng "cách cổ điển" để xây dựng bộ thử nghiệm, đó là kiến ​​sử dụng tác vụ kiến ​​của jUnit.

2

Hãy cho tôi một chút quá để tìm ra nó, nhưng tôi nghĩ rằng điều này giải quyết vấn đề của bạn:

Bạn đang làm một suite.addTestSuite (TestCase.class), trong khi bạn nên thực hiện một suite.addTest (TestCase.class).

Bạn cũng có thể thêm một bộ kiểm thử vào bộ kiểm tra để tạo toàn bộ hệ thống phân cấp của các thử nghiệm. Trong trường hợp đó, bạn sẽ phải sử dụng suite.addTest(). Nhưng lưu ý rằng bạn sau đó sử dụng .suite() và không .class: suite.addTest (MyTestSuite. suite())!

0

Hãy cẩn thận khi sử dụng hoàn thành mã của IDE để thêm nhập cho @Test. Nó phải là import org.junit.Testkhông phảiimport org.testng.annotations.Test chẳng hạn. Nếu bạn làm điều sau, bạn sẽ nhận được lỗi "không có phương thức runnable". (Tôi đã sử dụng Intellij Idea 2017 đã nhập org.junit.jupiter.api.Test thay thế!)