yılında EntityManager enjekte ben THOUGHTWORKS XStream kütüphanesinden bir istisna olsun JPA. Aynı test, PowerMockRule
kullanılmadığında iyi çalışır. Ayrıca testin başında tüm paketleri PowerMockLoader'dan görmezden geliyorum. @PowerMockIgnore
için çeşitli değerler denedim, çünkü bu normalde PowerMock ile ilgili sorunları çözer, ancak bu hata kesinlikle her paketi göz ardı etseniz bile gerçekleşir. aşağıdaki gibi Powermock ve Bahar neden ConversionException testinde
@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() {
}
}
istisna - geri izleme Pastebin üzerinde tam backtrace bağlantılar soru uzunluğu için sınırı) aştı:
İlgili kalıcılık birimi:
<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 bağımlılıkları:
<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
Yayını kullanarak sınama. Ayrıca, Spring-Powermock kombinasyonu ile diğer bazı hataları çözen, fakat bu değil, bahar test sürümü 3.0.5.RELEASE
ile test ettiğime dikkat edin.
kullandığınız XStream sürümü nedir? Kayıtlı herhangi bir özel XStream dönüştürücünüz var mı? Özel bir XStream dönüştürücümün olduğu bir sorunla karşılaştım. Özel dönüştürücüler, diğer dönüştürücülerden önce çağrılır, ancak ben, CanConvert yöntemi boş olmayan XStream tarafından sağlanan MapConverter alt sınıfını kullandığım için boş bir işaretçi istisnası alıyorum (normalde NullConverter listenin en üstünde). Çözüm, özel dönüştürücümün canConvert yöntemini geçersiz kılmaktı. Ancak yığın izlerinizden yola çıkarak bu durum başka bir şeye benziyor ... –
xstream sürümü, "powermock-classloading-xstream" bağımlılığı aracılığıyla 1.4.2'ye dönüşüyor. Gösterilen test haricinde başka bir kodum yok, bu yüzden herhangi bir özel dönüştürücünüz yok ... – amoe
Powermock 1.5 deneyimlerime göre, Xstream 1.4.2 ile uyumlu değil. Nedeni takip et; garip o zaman o powermock-classloading-xstream için çözer. XStream 1.2.2'yi pompanıza doğrudan bağımlılık olarak eklemeyi denemenizi tavsiye ederim. –