当前位置: 首页 > 知识库问答 >
问题:

RunWith(PowerMockRunner.class)不适用于包注释

叶健柏
2023-03-14

我试图让RunWith(PowerMockRunner.class)处理我现有的包注释。

版本:

Powermock 1.4.12 mockito 1.9.0 jUnit 4.8.2

package-info.java//这是包注释

@TestAnnotation(version="1.0")
package com.smin.dummy;

测试说明。java//这是包“com.smin.dummy”的元数据注释类

package com.smin.dummy;

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PACKAGE)
public @interface TestAnnotation {
  String version();
}

A、 爪哇

package com.smin.dummy;

public class A {
    private static Package myPackage;
    private static TestAnnotation version;

    static {
      myPackage = TestAnnotation.class.getPackage();
      version = myPackage.getAnnotation(TestAnnotation.class);
     }

    public static String getVersion() {
        return version.version();
    }
}

莫卡。Java语言

package com.smin.dummy;


import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import com.smin.dummy.A;

@RunWith(PowerMockRunner.class) //comment out this line to see the difference
@PrepareForTest(A.class)
public class MockA {
@Test
public void test_mocked() throws Throwable {
    String thisVersion = A.getVersion();
    System.out.println(thisVersion);
}
}

在unitest MockA中。如果我不使用RunWith(PowerMockRunner.class),我会按预期打印出这个版本。但是在添加了RunWith(PowerMockRunner.class)之后,这个版本变成了null。我怀疑PowerMockRunner在这里对包注释做了一些有趣的事情,有人知道吗?请参阅下面我的代码的迷你版本:


共有1个答案

勾安翔
2023-03-14

基于@Alban在注释中的侦探工作,看起来将此注释添加到您的测试用例应该可以规避问题:

@PowerMockIgnore("com.smin.dummy.TestAnnotation")
 类似资料:
  • 我有折叠代码: 根据以下链接中描述的原因,我无法使用

  • 我是Spring的新手,我很困惑@CreatedDate注释在实体中是如何工作的。 我做了一次谷歌搜索,有很多解决方案,但除了一个,没有一个适合我。我很困惑为什么? 这是我先试的 它不起作用。我为列中的值获取了NULL。 然后我做了这个。 这实际上将时间戳存储在db中。我的问题是,我遵循的大多数教程都建议我不需要来获取当前时间戳。看起来我确实需要它。我缺少什么吗?

  • 我正在开发一个示例SpringBoot应用程序。我有两个包裹。通用域名格式。A(其中有@springbootApplication注释的主类)2。通用域名格式。B(其他春豆)。 现在我的问题是:由于应用程序失败,包B中的Spring bean没有被扫描。我尝试使用a。@springbootApplication atio(scanBasePackages="com. B")b。也@组件扫描(...

  • 环境:科特林 1.5.30, 春靴 2.5.4(Spring 5.3.9) 我试图创建一个组合注释来简化类似的模板注释代码。注释类如下: 预期用法: application.yaml: 但在应用程序启动后,TheBean 未按预期注册。 > 首先,我在github spring存储库中搜索,发现了这个:回归:自定义组合@Profile注释,组件扫描不再支持没有运行时保留。所以我试图但没有效果。 尝

  • 两个无状态EJB及其远程接口。EJB1被注入EJB2 > EJB2还使用一些可选包(在其清单中声明) WebLogic应用服务器(10.3.3) 两个EJB被打包成两个单独的JAR文件 如果将两个JAR文件打包到一个EAR文件中并部署,则依赖注入工作。但是如果我单独部署它们,即使我首先部署了EJB1并在Weblogic(com.xxx.EJB1#com.xxx.layer1中验证了全局JNDI名称

  • 错误在此输入图像描述 我试图发送事件的通知,当一些喜欢和评论他的帖子,通知评论和喜欢在这里工作是我的通知类。 我的控制器功能代码,用于通知评论 我的请求