无法运行任何Junit 4测试- InvalidTestClassError:测试类无效

aoyhnmkz  于 2022-11-24  发布在  其他
关注(0)|答案(2)|浏览(236)

我正在尝试运行Junit4测试,但我无法运行它。我安装了以下依赖项

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

我的测试类如下所示

package model.validators;

import org.junit.Assert;
import org.junit.Test;

import java.util.Arrays;
import java.util.List;

class UserValidatorTest {

    @Test
    public void shouldReturnTrueForValidPhoneNumbers() {
        List<String> phoneNumbers = Arrays.asList(
                "9876543210",
                "7777543210"
        );
        boolean result = UserValidator.validateUserPhoneNumbers(phoneNumbers);

        Assert.assertTrue(result);
    }
}

当我尝试运行此测试时,我收到以下错误

org.junit.runners.model.InvalidTestClassError: Invalid test class 'model.validators.UserValidatorTest':

我正在使用IntellijIdea。知道这里出了什么问题吗?TIA
尝试更改依赖关系,重新加载maven项目,在Junit运行配置中设置正确的类路径

nvbavucw

nvbavucw1#

我可以看到你的类UserValidatorTest不是公共的。一旦你的类成为公共的,你就可以运行测试了。

package model.validators;

import org.junit.Assert;
import org.junit.Test;

import java.util.Arrays;
import java.util.List;

public class UserValidatorTest {

    @Test
    public void shouldReturnTrueForValidPhoneNumbers() {
        List<String> phoneNumbers = Arrays.asList(
                "9876543210",
                "7777543210"
        );
        boolean result = UserValidator.validateUserPhoneNumbers(phoneNumbers);

        Assert.assertTrue(result);
    }
}
w41d8nur

w41d8nur2#

JUnit4要求所有内容都是公共的。
JUnit5对测试类的可见性更宽容(测试类、测试方法和生命周期方法不需要是公共的,但它们一定不能是私有的)。
SonarLint规则说明:
在此上下文中(JUnit5),建议使用缺省的包可见性,这样可以提高代码的可读性。

相关问题