在單元測試中經常會碰到被測代碼裏面有類似:
往往是ejb調用,或者其他資源的調用。這個時候也許你要啓動application server......麻煩的單元測試-_-
其實在這樣的測試中你可能已經用了個jndi.properties,裏面定義了(例如在JBoss)
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
想一下,如果我們把這個factory,替換成我們自己的mock factory...
java.naming.factory.initial=MichaelNamingContextFactory
哈,這樣就算被測代碼裏面有Context.lookup()代碼也可以mock了,server也不用起了。
其實我們這樣就等於實現了JNDI的一部分SPI。