代码之家  ›  专栏  ›  技术社区  ›  limovo

无法运行任何Junit4测试-InvalidTestClassError:无效的测试类

  •  1
  • limovo  · 技术社区  · 3 年前

    我正在尝试运行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 Run配置中设置正确的类路径

    2 回复  |  直到 3 年前
        1
  •  2
  •   Chaitanya    3 年前

    我能看到你的课 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);
        }
    }
    
        2
  •  1
  •   Paul Marcelin Bejan    3 年前

    JUnit4要求一切公开。
    JUnit5对测试类的可见性更宽容(测试类、测试方法和生命周期方法不要求是公共的,但它们不能是私有的)。

    SonarLint规则描述:
    在这种情况下(JUnit5),建议使用默认的包可见性,这提高了代码的可读性。