testing运行“JUnit 4”没有发现testing

我的Javatesting在Eclipse中运行良好。 但现在,当我从运行菜单中重新启动testing时,我收到以下消息:

No tests found with test runner 'JUnit 4' 

.classpath文件中,我有所有的jar文件,并在最后有:

 <classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry kind="output" path="bin"/> </classpath> 

我怎样才能解决这个错误,并让testing再次运行?

这只是发生在我身上。 重build或重新启动Eclipse没有帮助。

我通过重命名其中一个testing方法以“test …”(JUnit3样式)开始,然后find所有testing来解决此问题。 我把它重新命名为以前的东西,它仍然有效。

当我们得到这些错误,似乎像Eclipse只是困惑。 重新启动Eclipse,刷新项目,清理它,让Eclipse重build它,然后重试。 大多数时候,这就像一个魅力。

在“testing”目录的上下文菜单中select“构buildpath” – >“用作源文件夹”。 Eclipse应该将您的unitTests.java文件看作源文件。 警告'没有发现JUnittesting'发生,因为在'build'目录中没有unitTests.class文件

检查你的testing类是否扩展“TestCase”。 如果是的话,删除该条款。 你的类不需要从“TestCase”类扩展。 这是我遇到的大多数情况。

 public class MyTestCase extends TestCase{ @Test public void checkSomething() { //... } } //Result> AssertionFailedError: No test Found in MyTestCase 

下面的TestCase应该没问题。

 public class MyTestCase { @Test public void checkSomething() { //... } } //Works fine 

我面临着同样的问题,我把它debugging到networking和junit内部的坏例子。 基本上不要让你的类扩展TestCase作为Junit 4.x的一些例子。 使用一些命名约定Test或者如果你想有一个注解,你可以使用@RunWith(JUnit4.class)。

如果你需要访问assert方法,扩展Assert或使用静态导入。

如果你的类扩展了TestCase,那么即使你使用了Junit 4 Runner,它也会作为3.这是因为在初始化代码中有检测:

请参阅JUnit3Builder和行:

 boolean isPre4Test(Class<?> testClass) { return junit.framework.TestCase.class.isAssignableFrom(testClass); } 

这将返回true,并且不会尝试junit4兼容性的testing。

尝试添加

@Test以上的方法进行testing就像这样

 @Test public void testParse() { } 

我发现了答案:

当我从eclipse执行独立testing(右键单击方法并select以junittesting运行)时,出现此错误,

当我执行完整的类作为junittestingtesting正确执行的参数。

在JUnit4中没有testing。 改为使用注释或使用旧的JUnit3名称约定。

例:

 @RunWith(Suite.class) @SuiteClasses({YourClassWithTests.class}) 

当我面对这个问题,我只是编辑文件,并保存它…像魅力的作品

这也发生在我身上。 我尝试重新启动Eclipse,并在testing中添加了我的testing方法前缀。 都没有工作。

以下步骤起作用:将@BeforeClass和@AfterClass中的所有testing方法更改为静态方法。

即如果你有你的testing方法在下面的格式:

 @BeforeClass public void testBeforeClass(){ } 

然后将其更改为:

 @BeforeClass public static void testBeforeClass(){ } 

这对我有效。

我的问题是,声明import org.junit.Test; 已经消失(或没有被添加?)。 添加后,我不得不删除另一个import声明(Eclipse会提示你哪一个),一切又开始工作。

很晚,但是为我解决问题的方法是我的testing方法名称都是以字母“public void Test”开头的。 使t小写工作。

我尝试了Germán的解决scheme。 它适用于我所有的方法,但我的项目中有很多类。

所以我尝试从构buildpath中删除,然后重新添加它。 它工作完美。

希望它有帮助。

另外一个可能的解决scheme是我不能从编辑器窗口或Package Explorer中运行testing类,而是在Outline视图中右键单击类名并selectRun As JUnittesting做了工作…去图!

可能是你的JUnit启动configuration是针对一个单独的testing类,并且你以某种方式改变了这个configuration来“在一个源文件夹,包或者项目中运行所有的testing”

但是,这可能会触发“testing运行”JUnit 4“找不到testing”错误消息。

或者你在testing类中做了修改,删除了@Test注解。
看这个维基页面 。

运行JUnittesting时,我也面临同样的问题。 我通过将注解@Test放在主testing函数之上来解决这个问题。

解决我的问题的方法类似于@JamesG的回答:我重新启动了Eclipse,重build了项目并刷新了它; 但在我做任何之前,我第一次closures项目(右键单击项目在资源pipe理器 – >closures项目),然后重新打开它。 然后它的工作。

在find我刚描述的最终解决scheme之前find的解决方法解决scheme:复制testing类,然后将testing类作为JUnit运行。

检查你的testing文件夹是否是源文件夹。 如果没有 – 右键单击​​并用作源文件夹。

closures并打开项目为我工作。

六年后…… Eclipse仍然存在问题,偶尔也找不到JUnits。

在我的Eclipse Mars 2中,如果文件中有超过9或10个@Test注释,我发现它不会识别从git中拉入的testing类。 我需要注释掉任何额外的testing,运行testing类,然后取消注释并重新运行这个类。 去搞清楚…

你的Eclipse项目是基于Maven吗? 如果是这样,你可能需要更新m2eclipse版本。

简单的说一下:我在Eclipse中有一个基于Maven的项目,最初使用Eclipse中的“new maven project”向导生成。 我正在使用JUnit 4.5进行unit testing,并且可以非常高兴地使用maven从命令行运行testing,并使用Eclipse作为JUnittesting运行单个testing….但是,当我尝试运行所有testing在项目中,通过在项目根节点上调用Run作为JUnittesting…,Eclipse抱怨说“ 没有用testing运行器junit 4发现testing ”。 通过将m2eclipse升级到m2eclipse更新站点(特别是我从版本0.9.8.200905041414升级到Eclipse Galileo中的0.9.9.200907201116)的最新稳定开发构build解决。

从这里: http : //nuin.blogspot.com/2009/07/m2eclipse-and-junit4-no-tests-found.html

这也发生在我身上。 我发现在Eclipse中我没有创build一个新的Java类文件,所以这就是为什么它不编译。 尝试将代码复制到java类文件,如果它不在那里,然后编译。

我发现如果您的testing类从TestCase扩展,Eclipse似乎只执行JUnit 3样式testing。 如果你删除inheritance,注释为我工作。

注意,你需要静态导入所有需要的assert*方法,比如import static org.junit.Assert.*

我也用Maven运行Eclipse(m2e 1.4)。 testing是用Maven运行的,但是不能用Eclipse …甚至在Maven>Update project几个应用程序之后。

我的解决scheme是在m2e生成的.classpath中添加一些行。 线路正在粘住。

 <classpathentry kind="src" output="target/test-classes" path="src/test/java"> <attributes> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> 

我不时有这个问题。 解决这个问题的最主要的是从运行configuration运行JUnittesting…确保将JUnit 4设置为testing运行器。

通常,我在Package Explorer的上下文菜单中尝试Run As … Junittesting时发现此问题。 如果您右键单击要运行的testing代码,而不是selectRun As … Junit Test,则selectRun configurations …确保Project,Test Class和test runner设置正确,然后单击apply,然后运行一直为我工作。

我开始在我的工作中使用Selenium和Eclipse,我正在做我的第一个自动化testing,并从代码中删除了@Before,@Test和@Afterlogging,我遇到了这个问题“没有用testing运行器junit4发现testing” 。

我的解决scheme是简单地再次添加@Before,@Test和@After笔记,并与我的脚本工作。 重要的是不要从代码中删除这个。

这是一个使用Googlesearch内容的简单testing:

 import java.util.regex.Pattern; import java.util.concurrent.TimeUnit; import org.junit.*; import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.Select; public class TestingClass { private WebDriver driver; //Creates an instance of the FirefoxDriver **@Before** public void SetUp() throws Exception { driver = new FirefoxDriver(); } **@Test** //Search using keyword through Google Search public void TestTestClass2 () throws Exception { driver.get("http://www.google.com.mx/"); driver.findElement(By.name("q")).sendKeys("selenium"); Thread.sleep(10000); driver.findElement(By.name("btnG")).click(); Thread.sleep(10000); } //Kill all the WebDriver instances **@After** public void TearDown() throws Exception { driver.quit(); } } 

使用ScalaIDE(3.0.4-2.11-20140723-2253-Typesafe)我有类似的问题, Right Click Scala Test Class-> Run As -> Scala Junit Test上下文菜单。

我试着编辑类(但不是编译失败),清理,closures项目,closuresEclipse。 这些工作都没有恢复以前运行良好的类的上下文菜单。 testing类不使用@Test注释,而是使用ScalaTest代码在类的顶部使用@RunWith(classOf[JUnitRunner])注释。

当我尝试从运行configuration启动编辑器直接selectScala Junit Test ,我收到了问题的对话框。 Footix29的答案是我的关键。

我注意到,即使我已经清理了几次项目,我的/ bin目录中的类还没有真正重build过。

下面是我回到上下文菜单,并能够再次运行Scala Junit Test s:

  • 通过资源pipe理器删除/bin/<package dir>* manually清理类
  • Project -> Clean彻底重buildProject -> Clean项目

我怀疑一般的类编辑能够清理一些已保存的Eclipse状态并重新开始。 在我的情况下,我尝试过的所有以前工作的类都失败了,所以manual清理步骤只是我需要的锤子。 但是,影响Eclipse类path/构build状态概念的其他技巧也应该起作用。

此外,我认为这种行为部分是由于尝试通过重命名Scala类(Scala Eclipse IDE吸取的)来重构Scala类而触发的,原始文件更改后的所有清理都是手动的。 没有构build错误,但也没有任何警告,我期待的意思是什么肯定被困在Eclipse的生成状态信息。

还有一个机会,你可能会把Junit Test从较低的版本(例如Junit 3)改成Junit 4。 是这样按照下面的步骤:

 1. Right Click on class 2. Select Run as >> "Run Configurations" 3. Check your "Test Runner" option in new window 4. If it not same as maven change it for example change it as Junit 4. 

右键点击Project – > Build Dependencies – >删除已经从构buildpath中排除的 – >点击OK

右键单击项目 – > Maven – >更新项目。

你应该好好去..

您可以通过以下操作来解决此问题:

  • 右键单击名为“testing”>“生成path”>“用作源文件夹”的文件夹
  • 或者你可以设置类path为: <classpathentry kind="src" path="src/test/java"/> 。 你用你的testing包replace“src / test / java”

发生这个问题是因为junit无法识别你的源代码:D