【问题标题】:JUnit does not read test methodsJUnit 不读取测试方法
【发布时间】:2021-04-24 21:57:36
【问题描述】:

我正在尝试使用 JUnit 来测试我所做的队列实现,但我遇到了一个问题:就像 JUnit 找不到我的测试方法一样。有谁知道如何解决这样的问题?

更多说明,这是 Eclipse 提出的问题

java.lang.NoClassDefFoundError: org/junit/platform/engine/ConfigurationParameters
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:34)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
    at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350)
    at java.base/java.lang.Class.newInstance(Class.java:645)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:371)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:366)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:310)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:225)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.ConfigurationParameters
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 13 more

这也是我的测试课。

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;


import java.lang.String;
import org.junit.Before; 
import org.junit.jupiter.api.Test;

public class QueueTest {
    private Queue qq;
 
    @Before
    public void setUp()
    {
        
        qq = new Queue<Integer>();
    }
    
    @Test
    public void testInitialState()
    {
           
        
        
    }

   
    @Test
    public void testAddElement()
    {
       
    
    }

    @Test
    public void testHowMany()
    {
       
    }

    @Test
    public void testGetElement()
    {
        
    }

    @Test
    public void testTimings()
    {
       
    }


}

我还尝试将 JUnit 的版本从 5 更改为 4,但没有任何变化,问题可能与构建路径有关吗? 谢谢,

【问题讨论】:

  • 我无法在 Eclipse 2020-12 中重现这一点。你有过时的版本吗? org.junit.Before 是 JUnit 4,必须改为 org.junit.jupiter.api.BeforeEach。切换 JUnit 版本时,还要确保在 JUnit 运行配置中更改 Test runner
  • 我有4.18版本
  • JUnit 没有 4.18 版本。你是说 4.13 吗?
  • @StefanBirkner Eclipse 2020-12 (4.18)。
  • 问题修复了我的笨蛋将库放在模块路径而不是类路径中,因此为什么 classNotfOUNDexception

标签: java eclipse junit


【解决方案1】:

JUnit 5 被分成几个artifacts,主要是 API 和运行测试的实际引擎。您看到的错误似乎表明您没有可用的引擎(或者更准确地说是引擎所依赖的平台)。假设您使用的是 Maven,请确保您具有以下依赖项:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <scope>test</scope>
</dependency>

【讨论】:

  • 根据截图,这里没有使用Maven。
  • 拍,我没注意截图。在那种情况下,这可能是 IDE 的配置,正如您在评论中所说的那样。
猜你喜欢
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
相关资源
最近更新 更多