我完全迷失在這一個。我有一些基於Spring的JUnit4運行的接受測試。現在我也想添加單元測試。爲了讓他們快速跳過上下文並用PowerMock注入模擬。然而,所有突然的反射都不再有效。使用Java反射返回所有空值
public class TestSomething {
@Test
public void nothingWrongWithThis() {
Class<?> type = Client.class;
type.getDeclaredMethods();
}
}
第二行將返回null一樣,除了的getName任何其他方法調用()的類型
如果我使用上下文但它會工作:
@TransactionConfiguration
@ContextConfiguration({ "classpath:dw-product-context-test.xml" })
@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
public class TestSomething {
@Test
public void nothingWrongWithThis() {
Class<?> type = Client.class;
type.getDeclaredMethods();
}
}
有什麼不對嗎?不應該沒有任何亞軍或背景下的反思工作?
甚至不添加行
private Client client = new Client();
會改變什麼(思想也許初始化爲了類所需要的運行時能夠在其上反映)
哦,加入
@RunWith(PowerMockRunner.class)
也不會改變任何東西。
任何想法?
謝謝! PS:從現在開始,我們將會出城一天,所以我會在35個小時左右閱讀任何答案。
編輯
只是想出了事情的原委: 我開始在我的調試器和打開Client.class.declaredMethods
這是null
。當我運行getDeclaredMethods()
時,它會得到它們。所以它看起來好像一切都在第一個空它讓我感到困惑,但調試器只是沒有運行在所有領域get...()
讓他們null
最初
如果我使用彈簧情況下它會加載所有的bean(Client
是@Entity
)並用軟引用填充所有反射字段,就像我在所有字段上調用get..()
一樣。
你使用任何加載時間編織?你確定兩個測試都使用相同的'Client'類(相同的包)嗎? – Ralph 2012-03-12 15:32:45
如何'type.getDeclaredMethods();'返回'null',或者你的意思是,它返回一個空數組? – Ralph 2012-03-12 15:35:10
感謝您的意見。想通了,檢查我的編輯。 – Pete 2012-03-14 08:31:32