java—eclipse项目类路径中的配置有什么用:“org.eclipse.jdt.junit.junit\u container/4”

niwlg2el  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(460)

我已经完成了一个单元测试类,但是当我运行它时,它返回一个异常。以下是我的测试用例:

import java.util.Date;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.modules.junit4.rule.PowerMockRule;

import com.tibco.plugin.hl7.utils.EnvUtils;

import static org.easymock.EasyMock.expect;
import static org.junit.Assert.*;
import static org.powermock.api.easymock.PowerMock.expectNew;

import powermock.exception.A;
import powermock.exception.AException;

@RunWith(PowerMockRunner.class)
@PrepareForTest({A.class})
public class PowerMockRuleTest {

  @Rule
  public ExpectedException exception = ExpectedException.none();
// 

    @Test
    public void testException() throws Exception{
        exception.expect(AException.class);
        A a = new A();
        a.sayA();
    }

     @Test
    public void testMockB() throws Exception{

        A b = PowerMock.createMock(A.class);
        expect(b.sayB()).andReturn("c");
        PowerMock.replay(b);
        assertEquals(b.sayB(), "c");
        simulateCurrentTime();

    }
}

以下是例外情况的一部分:

java.lang.ClassCastException: org.junit.rules.ExpectedException cannot be cast to org.junit.rules.MethodRule

    at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:79)
...

然后我创建了一个新的java项目,并将相关的java代码和测试用例以及所有相关的lib复制到新项目中,重新运行测试用例,效果很好!然后我用“beyond compare”比较了这两个类路径文件的区别,发现了以下区别:

我用红线标出了区别,并作了一些描述。
然后我复制内容” <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> “对于第一个项目,单元测试可以成功运行!
这让我很困惑,这个配置在类路径中有什么用?我应该每次都手动复制吗?如果是这样,那就不是一份快乐的工作:-(

6yt4nkrj

6yt4nkrj1#

您的项目需要使用junit库来运行junit测试。类路径中的条目指定这些库的位置;在本例中,它是来自eclipse的junit4。您可以使用其他版本(例如,3)或不属于eclipse的库。
要添加这个库,可以使用eclipseui。打开项目属性,转到java构建路径,然后打开库选项卡。然后单击addlibrary,您将得到一个可以选择junit的库列表。每次使用junit测试创建新项目时都必须这样做。

相关问题