2013-05-29 39 views
4

我正在通过使用驱动程序类来执行关于执行服务器测试用例的教程。 Eclipse错误窗格显示错误消息:java.lang.Exception:No runnable methods。当 驱动程序类试图运行exceptionTesting类时出现错误消息。Junit - java.lang.Exception:没有可运行的方法

立足于此帖子:java.lang.exception no runnable methods junit。看来应该在测试类中使用@Test注释,或者将Junit Jar文件更新为最新版本将解决该问题。

Junit的jar文件版本:4.11

请仔细阅读我的代码,并告诉我我该作什么修改,以避免该错误消息。谢谢!

驱动程序类:

import org.junit.runner.*; 
import org.junit.runners.Suite; 

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    basicAnnotation.class, 
    personTest.class, 
    exceptionTesting.class 
}) 
public class UnitTestDriver { 

} 

exceptionTesting类

import org.junit.*; 
import org.junit.Test; 


public class exceptionTesting 
{ 
    public class junitTest2{ 
     @Test (expected = ArithmeticException.class) 
     public void divisionWithException(){ 
      int i = 1/0; 
     } 

    } 
} 
+0

你使用的是junit4吗? – Woot4Moo

+0

@ Woot4Moo是的,我在Eclipse中使用Junit 4.11 – user2061466

+0

您确定它是作为JUnit 4测试运行吗?有时Eclipse默认使用JUnit 3.检查的方法是以...的形式运行以查看该测试的启动配置。 –

回答

3

的问题是,junitTest2嵌套exceptionTesting的内部。你有两个选择来解决它:

1)摆脱有你测试的内部类的顶层类:

import org.junit.*; 
import org.junit.Test; 


public class exceptionTesting 
{ 
     @Test (expected = ArithmeticException.class) 
     public void divisionWithException(){ 
      int i = 1/0; 
     } 
} 

2)让你的顶层类指定测试被封闭,使你的内部类是静态的:

import org.junit.*; 
import org.junit.Test; 

@RunWith(Enclosed.class) 
public class exceptionTesting 
{ 
    public static class junitTest2{ 
     @Test (expected = ArithmeticException.class) 
     public void divisionWithException(){ 
      int i = 1/0; 
     } 

    } 
} 

除非你有理由需要内部类,否则#1是更好的选择。另请注意,在Java中,约定是开始使用大写名称的类。所以exceptionTesting将成为ExceptionTesting。

+1

+1提到了Enclosed test runner,它有助于分层组织测试方法。 –

+0

@JeanneBoyarsky。感谢给我提供了详细的编码样本。我在做方法2时遇到了一些问题 - 在嵌套类中执行测试。我添加了*'import org.junit.runners.Enclosed;'*,Eclipse抱怨_导入org.junit.runners.Enclosed无法解析_。对于'@RunWith(Enclosed.class)',我收到错误消息,说_Class 无法解析为type_,_Enclosed无法解析为type_。请告诉我如何使其工作。谢谢! – user2061466

+0

你在什么版本的JUnit上?我相信Enclosed曾经是实验性的,并且是一个不同的包装。 –

相关问题