gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:41 25 4
gpt4 key购买 nike

我正在尝试让 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;

TestAnnotation.java//这是包“com.smin.dummy”的元数据注释类

package com.smin.dummy;

import java.lang.annotation.*;

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

A.java

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();
}
}

MockA.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.java 中,如果我不使用 RunWith(PowerMockRunner.class),我将打印 thisVersion 0.1 符合预期。但是添加RunWith(PowerMockRunner.class)后,thisVersion变为null。我怀疑 PowerMockRunner 在这里用包注释做了一些有趣的事情,有人知道吗?请参阅下面我的代码的迷你版本:

最佳答案

基于@Alban 在评论中的调查,将此注释添加到您的测试用例似乎可以规避问题:

@PowerMockIgnore("com.smin.dummy.TestAnnotation")

关于java - RunWith(PowerMockRunner.class) 不适用于包注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13377634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com