当前位置: 首页 > 知识库问答 >
问题:

在eclipse中将junit测试文件添加到测试包中,但它不会运行

云瑞
2023-03-14

我在Eclipse IDE中使用JUnit4。我有一个包含7个测试的测试文件,通过选择运行为JUnit运行良好。我为另一组测试添加了另一个文件。我有一个测试文件。我相信我正确地创建了测试...这个文件/测试

@RunWith(MockitoJUnitRunner.class)
public class CloseSummaryOrCloseTrailerResponseTest {

    @InjectMocks
    XMLTransaction xmlTransaction;

    @Before
    public void initMocks() {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void whenCloseSummaryResponseNoErrorExpectCorrectXmlMsgProduced ()
{
..code to run the test
}
}

当我选择文件并选择运行为JUnit时,什么都不会发生。我错过了什么?

更新抱歉,信息不完整。。。

项目树如下所示:src/java/...源文件src/test/com/javaserver/交易/请求est.java /com/javaserver/transaction/ResponseTest.java

我可以运行RequestTest文件,所有测试都通过了。当我尝试运行ResponseTest文件时,最初没有输出。我重新启动了Eclipse,当我运行响应测试时,我得到了错误:

org.mockito.exceptions.base.MockitoExc0019:无法实例化@InjectMocks字段,名为'xmlTransaction'类型的类...

我导入了XMLTransaction类。但它不能被实例化。我没有一个主要的方法。我认为通过添加@RunWith(MockitoJUnitRunner.class),它可以运行这个类。它运行另一个类文件。

更新它看起来我想要模拟的对象需要一个1参数构造函数。构造函数将如下所示:

XMLTransaction xmlTrans = new XMLTransaction(URL)

URL只是一个文本字符串,而不是实际的URL。但是我如何实例化对象呢?如果我把它放在@InjectMocks下面,我得到编译错误:

默认构造函数不能处理异常类型由隐式超级构造函数引发的异常。必须定义显式构造函数

更新我需要使用PropertyManager类来创建XMLTransaction类。我在@InjectMocks下使用这段代码来实现这一点:

String wlUrl = PropertyManager.getInstance().getProperty(URL);

但是我得到了错误:无法处理属性异常。

更新我尝试将@MockInject替换为@Mock,并使用init()创建类:

 public final static String URL="WL_APPSERVER";  
    @Mock
    XMLTransaction xmlTransaction;  
    @Before
    public void initMocks() throws Exception {
        XMLTransaction xmlTransaction = new XMLTransaction(URL);
    }

我得到一个错误:Mockito不能模拟这个类:class

com.fedex.ground.tms.javaserver.dock.transaction.XMLTransaction。莫奇托只能嘲弄非私人

如果我添加一个没有参数的默认构造函数,我会得到同样的错误。这是一门公开课,不是期末考试。

更新我通过添加PropertyManager的实例解决了上述问题。此对象需要一个属性文件
现在的错误是找不到属性文件。我现在有这个。

@RunWith(MockitoJUnitRunner.class)
public class CloseSummaryOrCloseTrailerResponseTest {

     public final static String URL="WL_APPSERVER";
     public final static String PROP_FILE = "src/config/tms20.properties";

    @Mock
    XMLTransaction xmlTransaction; 

    @Mock
    PropertyManager propertyManager;

    @Before
    public void initMocks() throws Exception {
        MockitoAnnotations.initMocks(this);
        Properties p = new Properties();
        p.load(new FileReader(new File(PROP_FILE)));
        propertyManager.getInstance(PROP_FILE);
        XMLTransaction xmlTransaction = new XMLTransaction(URL);
    }

我需要什么来识别属性文件?

共有2个答案

艾奕
2023-03-14

问题是构造函数正在调用私有方法来初始化类。因为Mockito不能处理私有方法,所以我使用PowerMock解决了这个问题。

毋弘光
2023-03-14

将您的测试放在层次结构中,如下所示:

project
    src
        main
             java      // source files
             resources // xml, properties etc
        test
             java      // source files
             resources // xml, properties etc

代码必须如下所示:

 @RunWith(MockitoJUnitRunner.class)
 public class ExampleTest {

     @Mock
     private List list;

     @Test
     public void shouldDoSomething() {
         list.add(100);
     }
 }

https://static.javadoc.io/org.mockito/mockito-core/2.6.8/org/mockito/junit/MockitoJUnitRunner.html

 类似资料:
  • 所以我是JUnit的新手,我们必须用它来做家庭作业。我们的教授给了我们一个有一个测试类的项目。当我右键单击>Run as>JUnit Test,我会弹出一个错误,上面写着‘找不到JUnit tests’。我知道这里已经回答了这个问题(没有找到测试运行程序'JUnit4'的测试),但是关闭eclipse、重新启动、清理和构建似乎不起作用。下面是我的运行配置、构建路径和我试图测试的类的截图。

  • 我使用的是Eclipse Oxygen.3版本(4.7.3)。以下是我的JUnit测试类: 当我运行这个JUnit测试时,eclipse不断弹出对话框,告诉“在测试运行程序'JUnit 5'中找不到测试”。为什么?

  • 我已经从https://howtodoinjava.com/spring-batch/java-config-multiple-steps/'复制了Spring批处理程序。 我从https://docs.spring.io/spring-batch/docs/current/reference/html/testing.html创建了以下JUnit测试用例: 我的Maven pom文件是: 谢谢

  • 在我的Eclipse项目(Eclipse Luna)中,我有一些JUnit测试用例,我不想在完全回归测试中运行。例如,因为它们需要用户在场以验证结果(例如,如果声音正确播放),或者因为它们只在特定系统上正确运行。这些测试大多是在对被测试类进行更改时手动使用的。我已经使用来忽略这些测试。 当我从Eclipse运行一个包含忽略测试的类(运行为->Junit测试)时,它将在测试列表中显示忽略的测试。

  • 我试图使用XML和TestNG运行一个测试套件,但是我总是同时使用Eclipse和命令行得到相同的消息: 该文件已正确读取,但测试似乎没有运行。 以下是我的testng.xml的内容: 这是我的目录结构在Eclipse中的样子: 此外,这也是我试图通过命令行运行测试套件的方式: 我尝试过通过eclipse清理项目,但似乎没有帮助。我也试过跑步: < code>mvn clean,但它也没有完成工作

  • 我尝试在Eclipse Oxygo4.7上使用Java9。显然,我已经安装了Java9对marketplace氧气的支持。我无法让junit测试工作。我用两个类创建了简单的maven项目: null null 如何在Eclipse中使用Java9运行这个测试?