0
私は例えばoracle.adf.share.security.identitymanagement.UserProfile
のモックを作成しようとしてきた時に例外をスローするクラスをからかっJMockit初期
@Test
public void testMyTest(@Mocked final UserProfile userProfile) {
new Expectations() {
{
userProfile.getBusinessEmail();
result = "[email protected]";
}
};
unitUnderTest.methodUnderTest();
}
私は何をしかし見つけてることJMockitをしようとしたときに例外がスローされるということです私はそれがこの
public class UserProfile implements Serializable {
...
private static UserManager _usrMgr = new UserManager();
...
}
のようなものを持って見ることができます逆コンパイル
UserProfile
後モック
java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at oracle.jdevimpl.junit.runner.junit4.JUnit4Testable.run(JUnit4Testable.java:24)
at oracle.jdevimpl.junit.runner.TestExecution.run(TestExecution.java:27)
at oracle.jdevimpl.junit.runner.JUnitTestRunner.main(JUnitTestRunner.java:88)
Caused by: oracle.adf.share.security.ADFSecurityRuntimeException: EXC_FAILED_ID_STORE
at oracle.adf.share.security.identitymanagement.UserManager.<init>(UserManager.java:111)
at oracle.adf.share.security.identitymanagement.UserManager.<init>(UserManager.java:83)
at oracle.adf.share.security.identitymanagement.UserProfile.<clinit>(UserProfile.java:62)
を構築の
UserManager
コンストラクタはADFSecurityUtil.getIdentityManagementProviderClassName();
が呼び出されたときに今、私は何かを返すように期待を設定することができ、この
public UserManager() {
this((String) null);
}
public UserManager(String providerClassName) {
if (providerClassName != null) {
...
} else {
String clzName = ADFSecurityUtil.getIdentityManagementProviderClassName();
if (clzName != null) {
IdentityManagement provider = (IdentityManagement) createObject(clzName);
setIdentityManagementProvider(provider);
} else {
throw new ADFSecurityRuntimeException("EXC_FAILED_ID_STORE");
}
}
}
のように見えるが、それは、このクラスをロードしようとしたとき、私は、さらに問題を予見します。
この問題を解決するにはどうすればよいですか?
ベストソリューションは、もちろん、UserProfileクラスを模倣しないことです。必要な "businessEmail"値をインスタンス化して設定できない理由はありますか? –
'Oracle ADF'のセキュリティ設定が行われている実行中のコンテナを必要とする' UserManager'スタティックで同じ問題が発生するので – PDStat