java - jmockit类强制转换异常

标签 java weblogic jmockit

我正在尝试模拟一些 webogic 类和接口(interface)来测试执行此操作的方法:

void init(oracle.wsm.policy.model.IAssertion assertion,....) {
...    
oracle.wsm.policy.model.IAssertionBindings bindings = ((oracle.wsm.policy.model.impl.SimpleAssertion) assertion).getBindings();
...
}

我的测试代码如下所示:

  @Test
  public final void testInit() {


  IAssertion assertionMock = new MockUp<IAssertion>() {
      @Mock
      QName getQName() {
        return new QName("qname");
      }
   }.getMockInstance();


   CustomAuditPolicy custom = new CustomAuditPolicy();
   custom.init(assertionMock);

我得到:

java.lang.ClassCastException: $Impl_IAssertion cannot be cast to oracle.wsm.policy.model.impl.SimpleAssertion
    at xxx.CustomAuditPolicy.init(CustomAuditPolicy.java:82)
    at xxx.CustomAuditPolicyTest.testGetAssertionName(CustomAuditPolicyTest.java:190)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

SimpleAssertion 类实现了 IAssertion,因此我也尝试模拟 SimpleAssertion 类,但仍然遇到相同的错误。

有人可以解释一下如何在这种情况下使用 jmockit 吗?

最佳答案

您需要模拟 SimpleAssertion在本例中是实现类,因为这是被测试方法所期望的。使用MockUp<IAssertion>在界面上只会给你一个动态代理类,它不是 SimpleAssertion ,因此 ClassCastException .

关于java - jmockit类强制转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29557243/

相关文章:

java - JMockit 相当于 Mockito doNothing()

java - 隐藏正在运行的Java窗口?

grails - Grails查找安全的JNDI

properties - 带有 Weblogic 的外部属性文件

weblogic - 从哪里开始使用 Weblogic 和 j_security_check?

java - JMockit:模拟的 api 会在一段时间后恢复

java - 使用 JMockit 模拟抽象类中的非公共(public)静态方法?

java - Gradle 构建成功但失败

java - 基于 WSDL 即时创建 Web 服务

java - java 无效的赋值运算符