我在使用TestNG和PowerMock的时候,总是抛出没有准备好测试的类。

问题描述 投票:0回答:1
@PrepareForTest(DataAccessorFactory.class)
@ContextConfiguration(locations = { "/test_jooq-spring.xml" })
public class WorkspaceManagerTest extends AbstractTestNGSpringContextTests {    

    @BeforeTest
    public void setUp() throws Exception {  
        this.applicationContext = SotsServiceLayerApplicationContext.getContext();
        ObjectInstancesFactory.setConnectionFactory(factory);
        PropertiesHandler.getInstance().loadPropertiesFile("app.properties");
    }

    @Test(priority = 1)
    public void testgetAllWorkspaces()
    {
        System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());

        try 
        {
            IDataAccessor ref = Mockito.mock(IDataAccessor.class);
            PowerMockito.mockStatic(DataAccessorFactory.class);
            Mockito.when(DataAccessorFactory.getInstance(Mockito.anyString())).thenReturn(ref);
            Mockito.when(ref.getAllWorkspaces(Mockito.any())).thenReturn(MockedDataModels.getWorkspaceList());

            queryparams.setExpand(Arrays.asList("sources","trainresults"));
            String output = workspaceManager.getAllWorkspaces(queryparams,mockURIInfo.constructMockURI(mockURIInfo,WorkspaceManager.class));

        }
        catch(Exception genEx)
        {
            genEx.printStackTrace();
        }
    }

}

总是得到这个异常

[Ljava.lang.Object;@415a3f6a
The class com.klatencor.softs.dataaccessor.DataAccessorFactory not prepared for test.

    at org.powermock.api.mockito.expectation.reporter.MockitoPowerMockReporter.classNotPrepared(MockitoPowerMockReporter.java:29)
    at org.powermock.api.mockito.internal.mockcreation.MockTypeValidatorFactory$DefaultMockTypeValidator.validate(MockTypeValidatorFactory.java:37)
    at org.powermock.api.mockito.internal.mockcreation.AbstractMockCreator.validateType(AbstractMockCreator.java:10)
    at org.powermock.api.mock

我曾试过添加 ObjectFactory in suite.xml 和重写方法... 在添加@objectFactory注解方法后,创建测试方法的实例异常失败,什么都不行......谁能帮忙解决一下。

java testng powermock
1个回答
0
投票

你应该扩展 PowerMockTestCase

像这样

@PrepareForTest(DataAccessorFactory.class)
public class WorkspaceManagerTest extends PowerMockTestCase { }
© www.soinside.com 2019 - 2024. All rights reserved.