junit:未找到测试

2022-08-31 13:53:52

我继承了一个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

电子邮件ProviderTest.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);
    }
}

此项目具有具有以下属性的“运行/调试”配置:

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

当我运行此配置时,我收到一个错误,指出:

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)

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


答案 1

我也收到这个错误:

junit.framework.AssertionFailedError: 在 ...

原因是我忘了指定

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

同步项目后,它找到了测试。所以也许它可以帮助别人。


答案 2

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

public class EmailProviderTest {

并且将从注释中找到测试方法。@Test

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


推荐