代码之家  ›  专栏  ›  技术社区  ›  bernhardrusch

JUnit和JUnit.framework.TestSuite-没有可运行的方法

  •  6
  • bernhardrusch  · 技术社区  · 17 年前

    我(在测试课上)做了一些单元测试。我读过的教程说,我应该为单元测试制作一个TestSuite。

    奇怪的是,当我直接运行单元测试(选择测试类-作为jUnit测试运行)时,一切都很正常,尽管当我在测试套件中尝试同样的事情时,总是会出现异常:java.lang.exception:没有可运行的方法。

    以下是测试套件的代码:

    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;
        }
    
    }
    

    你知道为什么这行不通吗?

    4 回复  |  直到 17 年前
        1
  •  5
  •   bernhardrusch    17 年前

    我对蚂蚁没有经验,所以我现在没有用它来测试它。

    在互联网上搜索,我似乎混淆了旧的jUnit 3.8和jUnit 4.0行为。 现在尝试一种使用“新行为”的方法

    编辑:
    现在它工作了:

    所有测试更改为:

    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更改为:

    import static org.junit.Assert.assertTrue;
    import org.junit.Test;
    
    public class TestCase  {
    @Test
        public void test1 {
            assertTrue (tmp.getTermin().equals(soll));
        }
    }
    
        2
  •  4
  •   AmiNadimi    8 年前

    使用IDE的代码补全功能添加导入时要小心 @Test 必须如此 import org.junit.Test import org.testng.annotations.Test 例如。如果你错误地使用了第二个方法,你会得到“no runnable methods”错误。 (我使用的是Intellij Idea 2017,它导入了 org.junit.jupiter.api.Test 相反!)

        3
  •  2
  •   MarcoV MarcoV    17 年前

    我也花了一点时间才弄清楚,但我认为这解决了你的问题:

    您正在做一个suite.addTestSuite(TestCase.class),而您应该做一个suite.addTest(TestCase.colass)。

    您还可以将测试套件添加到测试套件中,以创建整个测试套件层次结构。在这种情况下,您必须使用suite.addTest()。但请注意,您将使用.suite()而不是.class:suite.addTest(MyTestSuite)。 suite() )!

        4
  •  0
  •   gizmo    17 年前

    当然,它不会起作用,因为你没有告诉测试套件你的测试类是什么。

    但我想知道为什么你不使用“经典方法”来构建测试套件,即使用jUnit的ant任务。