注入的EntityManager時,當試圖春節測試運行,並使用PowerMockRule technique的PowerMock亞軍結合,我從ThoughtWorks的XStream的庫異常每當我試圖使用從PersistenceContext
註釋注入的EntityManager
JPA。當不使用PowerMockRule
時,相同的測試正常工作。在測試開始時,我也忽略了PowerMockLoader的所有軟件包。我爲@PowerMockIgnore
嘗試了各種值,因爲這通常可以解決PowerMock遇到的問題,但即使忽略每個軟件包也會發生此錯誤。 Powermock和Spring原因ConversionException測試
@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() {
}
}
唯一的例外是如下 - 鏈接到全回溯上引擎收錄回溯超過問題長度限制):
相關持久性單元:
<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>
使用彈簧3.2.3.RELEASE
進行測試。請注意,我還測試了彈簧測試版本3.0.5.RELEASE
,這確實可以解決Spring/Powermock組合中的其他一些錯誤,但不是這一個。
您使用的是什麼版本的XStream?你有沒有自定義的XStream轉換器註冊?我遇到了一個自定義XStream轉換器的問題。自定義轉換器在其他轉換器之前被調用,但由於我是繼承XStream提供的MapConverter,其canConvert方法不是Null安全的,我得到一個空指針異常(通常NullConverter位於列表的頂部)。解決方案是使我的自定義轉換器的canConvert方法無效。但從您的堆棧跟蹤來看,這看起來像是其他東西... –
xstream版本通過'powermock-classloading-xstream'依賴關係可傳遞到1.4.2。我沒有任何其他的代碼,除了顯示的測試,所以沒有任何自定義轉換器... – amoe
在我的經驗與Powermock 1.5,它不符合Xstream 1.4.2,我一直無法追查原因;奇怪的是,這是powermock-classloading-xstream解決的問題。我建議嘗試添加XStream 1.2.2作爲你的pom的直接依賴。 –