没有发现测试

我继承了一个 Java 项目,是 Java 开发的新手。我觉得让我熟悉代码的一个好方法是围绕它编写一些测试。我用 IntelliJ 写代码。

我现有的项目的文件夹结构如下:

/myProject
/src
/main
/java
/com.lexcorp
/core
/email
/providers
emailProvider.java

我创建了一个新的项目,将举行这个项目的测试。我希望这个项目同时进行单元测试和集成测试。目前,我的新项目有这样一个结构:

/myProjectTests
/src
/main
/java
/com.lexcorp.core.email.providers
emailProviderTest.java

Java 文件如下所示:

package com.lexcorp.core.email.providers;


import junit.framework.TestCase;
import org.junit.Test;


public class EmailProviderTest extends TestCase {


private final String username = "[testAccount]";


private final String password = "[testPassword]";


@Test
public void thisAlwaysPasses() {
assertTrue(true);
}
}

此项目具有具有下列属性的 Run/Debug 配置:

  • 测试类型: 全包装
  • 搜索测试: 在整个项目中

当我运行这个配置时,我得到一个错误:

junit.framework.AssertionFailedError: No tests found in com.lexcorp.core.email.providers.EmailProviderTest
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
at org.junit.runners.Suite.runChild(Suite.java:127)
at org.junit.runners.Suite.runChild(Suite.java:26)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

我不明白为什么我会得到一个归结为: “没有发现测试”的错误。虽然我的项目结构不同,但是操作系统上的文件夹结构是匹配的(这是另一件让我困惑的事情)。为什么我得到这个错误,我如何修复它?

69227 次浏览

扩展 junit.framework.TestCase是实现测试用例的旧的 JUnit 3方法,它不起作用,因为没有以字母 测试开头的方法。因为您使用的是 JUnit 4,所以只需将该类声明为

public class EmailProviderTest {

@Test注释中找到测试方法。

阅读: JUnit 混淆: 使用“扩展 Testcase”还是“@Test”?

我也得到了这个错误:

错误: 在... 中找不到测试。

原因是我忘了说明

defaultConfig {
...
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

在同步项目之后,它找到了测试,所以也许它帮助了其他人。

我也收到了这个:

错误: 在... 中找不到测试。

通过从 方法1重命名测试方法解决了这个问题

@Test
public void method1(){
// Do some stuff...
}

TestMethod1

@Test
public void testMethod1(){
// Do some stuff...
}

另一个原因通常是我看到人们拥有方法参数,删除你在测试方法中可能拥有的任何参数,不管你添加了@Test 注释,你需要让你的方法名开始“ test”,为了让 Junit 选择你的 testcase。 希望能有所帮助。

我在使用数据提供程序时使用了它,其中一个参数有一个新的行字符,如下所示:

@DataProvider
public static Object[][] invalidAdjustment() {
return new Object[][]{
{"some \n text", false},
};
}

移除 \n解决了这个问题

如果您使用的是 jUnit4,那么就不要使用 扩展了 TestCase,这样就消除了这个固定的错误。

测试方法名称 public void test姓名(){}

其中源命名方法中的 姓名()

我在 Intellij IDEA 遇到过同样的问题,关于 Java 框架。 我做得很好:

  • 从 TestCase 继承的类
  • 我导入了 junit.Framework TestCase
  • 我已经添加了装饰@测试

但是我做错了一件事: 方法 不是从“测试”开始的的名字实际上是:

@Test
public void getSomethingTest(){

当我把它变成:

@Test
public void testGetSomethingTest(){

我已经解决了这个问题: 执行者终于能够将这个方法识别为一个测试方法。 我什么都没改变。

在我的例子中,我需要 junit4-version.jar在任务 Junit的类路径中,还需要:

ant-version.jar
ant-junit-version.jar
ant-junit4-version.jar

在我的蚂蚁安装库(/usr/share/ant/lib)。

我得到的错误“ 错误: 在... 中找不到测试。”,而我没有 ant-junit4-*version*.jar在正确的地方。

我通过安装 蚂蚁可选 debian/ubuntu 软件包纠正了这个问题:

apt-get install ant-optional

我为此烦恼不已,没有一个答案对我有帮助,直到我将测试源文件从这个文件夹中移除:

src/test/java/com/junit/test

到这个文件夹:

src/test/java/com/junit

我在创建 private方法时遇到了 JUnit 5中的情况:

import org.junit.jupiter.api.Test


class Test1 {


@Test
private fun sort() {
println("1")
}
}

移除 private