【问题标题】:JUnitCore Class Not Found未找到 JUnitCore 类
【发布时间】:2014-04-21 04:57:45
【问题描述】:

我正在尝试从用户那里获取一个字符串/类/文件/名称,以指定要在哪个类上运行 Junit 测试。它编译并运行但是,Junit 测试说找不到类并给我一个错误。我不确定如何解决这个问题或解决它。

import java.util.Scanner;
import junit.framework.*;
import org.junit.runner.JUnitCore;

public class Utf extends TestCase
{
    public static void main(String[] args)
    {
        /*
         * creates and reads from scanner
         */
        Scanner in = new Scanner(System.in);
        String filename = in.nextLine();

        /*
         * gets Tester class' name and stores it as a String
         */
        String className = Tester.class.getName();

        /*
         * if user input String matches Tester class' name then run tests
         * else File Not Found
         */
        if (filename == className) {JUnitCore.main(className);}
        else {System.out.println("File not Found");}
        /*
         * closes scanner
         */
        in.close();

    }
}

public class Tester
{
    /*
     * tests StudentConstructor() method
     */
    public void testStudentConstructor() throws Exception
    {
        try
        {
            String uid = "000";
            String name = "Test Student";
            String email = "test@test.com";
            Student s = new Student(uid, name, email);
            assert (s.getUid() == uid);
            assert (s.getName() == name);
            assert (s.getEmail() == email);
        }
        catch(NullPointerException e){System.out.println("testStudentConstructor() failed: NullPointerException:" + e.getMessage());}
        catch(IllegalArgumentException e){System.out.println("testStudentConstructor() failed: IllegalArgumentException:" + e.getMessage());}
        catch(UnsupportedOperationException e){System.out.println("testStudentConstructor() failed: UnsupportedOperationException:" + e.getMessage());}
    };

    /*
     * tests StudentToString() method
     */
    public void testStudentToString() throws Exception
    {
        try
        {
            String uid = "000";
            String name = "Test Student";
            String email = "test@test.com";
            Student s = new Student(uid, name, email);
            s.studentToString(s);
        }
        catch(NullPointerException e) {System.out.println("testStudentToString() failed: NullPointerException:" + e.getMessage());}
        catch(IllegalArgumentException e){System.out.println("testStudentToString() failed: IllegalArgumentException:" + e.getMessage());}
        catch(UnsupportedOperationException e){System.out.println("testStudentToString() failed: UnsupportedOperationException:" + e.getMessage());}
    }

    /*
     * tests GetUid() method
     */
    public void testGetUid() throws Exception
    {
        try
        {
            String uid = "000";
            String name = "Test Student";
            String email = "test@test.com";
            Student s = new Student(uid, name, email);
            assert (s.getUid() == uid);
        }
        catch(NullPointerException e) {System.out.println("testGetUid() failed: NullPointerException:" + e.getMessage());}
        catch(IllegalArgumentException e){System.out.println("testGetUid() failed: IllegalArgumentException:" + e.getMessage());}
        catch(UnsupportedOperationException e){System.out.println("testGetUid() failed: UnsupportedOperationException:" + e.getMessage());}
    }

    /*
     * tests GetName() method
     */
    public void testGetName() throws Exception
    {
        try
        {
            String uid = "000";
            String name = "Test Student";
            String email = "test@test.com";
            Student s = new Student(uid, name, email);
            assert (s.getName() == name);
        }
        catch(NullPointerException e) {System.out.println("testGetName() failed: NullPointerException:" + e.getMessage());}
        catch(IllegalArgumentException e){System.out.println("testGetName() failed: IllegalArgumentException:" + e.getMessage());}
        catch(UnsupportedOperationException e){System.out.println("testGetName() failed: UnsupportedOperationException:" + e.getMessage());}
    }

    /*
     * tests GetEmail() method
     */
    public void testGetEmail() throws Exception
    {
        try
        {
            String uid = "000";
            String name = "Test Student";
            String email = "test@test.com";
            Student s = new Student(uid, name, email);
            assert (s.getEmail() == email);
        }
        catch(NullPointerException e) {System.out.println("testGetEmail() failed: NullPointerException:" + e.getMessage());}
        catch(IllegalArgumentException e){System.out.println("testGetEmail() failed: IllegalArgumentException:" + e.getMessage());}
        catch(UnsupportedOperationException e){System.out.println("testGetEmail() failed: UnsupportedOperationException:" + e.getMessage());}
    };
}

junit.framework.AssertionFailedError: No tests found in Utf
    at junit.framework.Assert.fail(Assert.java:57)
    at junit.framework.TestCase.fail(TestCase.java:227)
    at junit.framework.TestSuite$1.runTest(TestSuite.java:100)
    at junit.framework.TestCase.runBare(TestCase.java:141)
    at junit.framework.TestResult$1.protect(TestResult.java:122)
    at junit.framework.TestResult.runProtected(TestResult.java:142)
    at junit.framework.TestResult.run(TestResult.java:125)
    at junit.framework.TestCase.run(TestCase.java:129)
    at junit.framework.TestSuite.runTest(TestSuite.java:255)
    at junit.framework.TestSuite.run(TestSuite.java:250)
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:131)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

【问题讨论】:

  • 请添加堆栈跟踪
  • 我实际上并没有得到堆栈跟踪,它只是抛出一个失败而不是错误。
  • Nvm,我找到了。我编辑了帖子以在底部显示跟踪。

标签: java unit-testing junit filenames


【解决方案1】:

Tester 类中的测试方法应该有@Test 注解。 Utf 类也不应该扩展 TestCase。

import java.util.Scanner;

import org.junit.runner.JUnitCore;

public class Utf {
    public static void main(String[] args) {
    /*
     * creates and reads from scanner
     */
    Scanner in = new Scanner(System.in);
    String filename = in.nextLine();

    /*
     * gets Tester class' name and stores it as a String
     */
    String className = Tester.class.getName();

    /*
     * if user input String matches Tester class' name then run tests
     * else File Not Found
     */
    if (filename.equals(className)) {
        JUnitCore.main(className);
    } else {
        System.out.println("File not Found");
    }
    /*
     * closes scanner
     */
    in.close();

}

}

Tester.java

import junit.framework.TestCase;

public class Tester extends TestCase{

public void testStudentConstructor() throws Exception
{
    // Your code goes here
}

// Additional code

}

【讨论】:

  • 如果你不想使用@Test注解。 Tester 类应该扩展 TestCase。
  • 我更改了代码以反映这一点,但我仍然找不到类
  • 好的,我将 if (name == name) 更改为 (.equals) 版本,然后我收到此错误。线程“main”中的异常 java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source)
  • 请参阅stackoverflow.com/questions/4228047/…,了解缺少的依赖项。
  • 感谢您的链接,我忘记了世界上最简单的事情。也感谢您的快速回复。
猜你喜欢
  • 2018-05-03
  • 2018-07-13
  • 2012-04-22
  • 1970-01-01
  • 2020-10-15
  • 2019-05-07
  • 2018-04-15
  • 2014-01-12
  • 2017-12-16
相关资源
最近更新 更多