Powermock为测试类抛出Class Not Found Exception

时间:2017-12-25 00:10:25

标签: spring junit mockito powermock powermockito

我正在使用带有Ant构建和Spring 3.0的PowerMock。当我使用SpringJunit4ClassRunner注释时,测试运行正常。但是当我使用PowermockRunner实现PowerMockRunnerDelegate(1.6.5)时,运行器无法检测到测试类本身。

@Named("teskListTest")
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:conf/TestBeans.xml"})
@PrepareForTest(SysList.class)
public class SysListTest {  

SysList sysList;

@Test
public void addSysWithIdTest() throws Exception {

    System.out.println("SysListTest : Entering addSysWithIdTest ");

    java.util.logging.Logger log = Mockito.mock(java.util.logging.Logger.class);
    sysList = new SysList(log);
    Component comp = Mockito.mock(Component.class);
    PowerMockito.whenNew(Component.class).withNoArguments().thenReturn(comp);
    sysList.test();
    Mockito.verify(comp).getId();

    System.out.println("sysListTest : Exiting addsysWithIdTest");
}

我得到的例外是:

[junit] Running com.example.unittest.SystemTestSuite
[junit] Testsuite: com.example.unittest.SystemTestSuite
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.02 sec
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0.02 sec
[junit]
[junit] Testcase: initializationError took 0.002 sec
[junit]     Caused an ERROR
[junit] com.example.tasktest.SysListTest
[junit] java.lang.ClassNotFoundException: com.example.tasktest.SysListTest
[junit]     at java.lang.Class.forName(Class.java:219)
[junit]     at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:161)
[junit]     at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:48)
[junit]     at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:113)
[junit]     at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:71)
[junit]     at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32)
[junit]     at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:34)
[junit]     at java.lang.reflect.Constructor.newInstance(Constructor.java:539)
[junit]     at java.lang.reflect.Constructor.newInstance(Constructor.java:539)
[junit]     at java.lang.reflect.Constructor.newInstance(Constructor.java:539)
[junit]
[junit] Test com.example.unittest.TaskTestSuite FAILED

我尝试使用Mockito 1.9.5,1.10.16。尝试使用版本1.6.1和1.6.5以及Junit 4.12,4.11的PowerMock jar。例外从未改变过。

1 个答案:

答案 0 :(得分:0)

看起来您的生产类不属于测试类路径。我认为问题出在build.xml上。请查看JUnit的"Getting started – Ant"文章。