amo*_*moe 32 java spring jpa powermock
当尝试使用PowerMockRule技术组合Spring测试运行器和PowerMock运行器时,每当我尝试EntityManager使用PersistenceContextJPA中的注释注入时,我都会从Thoughtworks XStream库中获得异常.不使用时,相同的测试工作正常PowerMockRule.我还在测试开始时忽略了PowerMockLoader中的所有软件包.我尝试了各种值,@PowerMockIgnore因为这通常解决了我对PowerMock的问题,但是,即使忽略绝对每个包,这个错误仍然会发生.
@PowerMockIgnore("*")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/test-configuration.xml")
public class SpringAndPowerMockTest {
    @Rule
    public PowerMockRule rule = new PowerMockRule();
    @PersistenceContext
    private EntityManager manager;
    @Test
    public void test() {
    }
}
例外情况如下 - 链接到pastebin上的完全回溯,回溯超出了问题长度的限制):
相关持久单元:
<persistence-unit name="inMemory">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
  <properties>
    <property name="hibernate.connection.driver_class" value="org.h2.Driver" />
    <property name="hibernate.connection.url" value="jdbc:h2:mem:InMemoryUnitTests;MODE=MySQL;DB_CLOSE_ON_EXIT=FALSE" />
    <property name="hibernate.connection.username" value="sa" />
    <property name="hibernate.connection.password" value="" />
    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
  </properties>
</persistence-unit>
Maven依赖:
<dependencies>
<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.5.1</version>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.5.1</version>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>1.9.5</version>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-easymock</artifactId>
        <version>1.5.1</version>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4-rule</artifactId>
        <version>1.5.1</version>
        <scope>test</scope>
</dependency>
<dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-classloading-xstream</artifactId>
        <version>1.5.1</version>
        <scope>test</scope>
</dependency>
</dependencies>
使用Spring进行测试3.2.3.RELEASE.请注意,我还测试了spring-test版本3.0.5.RELEASE,它确实解决了Spring/Powermock组合的一些其他错误,但不是这个.
我遇到了类似的问题,建议我创建一个 Resources.java 类来生成实体管理器。
@Stateful
public class Resources implements Serializable {
    @PersistenceContext (type = PersistenceContextType.TRANSACTION)
    private EntityManager entityManager;
    @Produces
    public EntityManager getEntityManager() {
        return entityManager;
    }
}
我仍然不确定为什么这个解决方案对我有用......但它确实有效。
v/r 王牌
| 归档时间: | 
 | 
| 查看次数: | 3000 次 | 
| 最近记录: |