我有一个基于Gradle的Java项目,我现在想要使用PowerMock模拟一个私有方法.问题是我无法使用PowerMockRunner,因为我在添加@RunWith(org.powermock.modules.junit4.PowerMockRunner.class)
注释时总是遇到以下异常.
错误:
org.powermock.reflect.exceptions.FieldNotFoundException: Field 'fTestClass' was not found in class org.junit.internal.runners.MethodValidator.
at org.powermock.reflect.internal.WhiteboxImpl.getInternalState(WhiteboxImpl.java:581)
at org.powermock.reflect.Whitebox.getInternalState(Whitebox.java:308)
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate TestMethods(PowerMockJUnit4MethodValidator.java:79)
at org.powermock.modules.junit4.internal.impl.testcaseworkaround.PowerMockJUnit4MethodValidator.validate InstanceMethods(PowerMockJUnit4MethodValidator.java:49)
at org.junit.internal.runners.MethodValidator.validateMethodsForDefaultRunner(MethodValidator.java:51)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.validate(PowerMockJUnit44RunnerDelegateImpl.java:108)
...
Run Code Online (Sandbox Code Playgroud)
这是我的测试依赖项:
testCompile 'junit:junit:4.+',
'org.powermock:powermock-core:1.5.6',
'org.powermock:powermock-module-junit4:1.5.6',
'org.powermock:powermock-api-mockito:1.5.6'
Run Code Online (Sandbox Code Playgroud)
完全为空时(初始化错误),测试本身也会失败:
@RunWith(PowerMockRunner.class)
public class SomeTest {
@Test
public void testSomething() {
}
}
Run Code Online (Sandbox Code Playgroud)
什么想法可能是错的?使用PowerMock的其他测试工作正常(它们都没有使用PowerMockRunner).
问候和感谢任何帮助!本
我有一个简单的Gradle构建脚本来编译和打包(类似于应用程序插件)我的Java应用程序.我唯一没有做的就是在一个简单的.properties文件中替换当前版本号.
我用单行'application.version = @ version @'创建了一个文件'src/main/resources/app-info.properties'.不,只要将文件复制到构建文件夹,我想替换此版本字符串(认为这在构建任务期间发生).
我已经尝试过使用蚂蚁ReplaceTokens的简单解决方案.这个替换了版本,但也破坏了资源中的.png文件.
那么有一个简单的解决方案,只需在构建任务期间(或任何处理复制到构建文件夹的任务)替换单个文件中的令牌吗?
感谢您的任何帮助!本
======根据Opal的评论进行编辑=====
根据提示,我添加了以下内容:
import org.apache.tools.ant.filters.ReplaceTokens
// ...
build {
from('src/main/resources') {
include '*.properties'
filter(ReplaceTokens, tokens: [version : project.version])
}
}
Run Code Online (Sandbox Code Playgroud)
这引发了这个错误:
无法在根项目中找到来自()的参数[src/main/resources,build_vbjud9ah7v3pj5e7c5bkm490b $ _run_closure6_closure12 @ 43ead1a8]的方法
好像我在做错了什么?
======编辑完整性添加基于Opals建议的解决方案=====
谢谢你,以下是工作解决方案!
processResources {
from('src/main/resources') {
include '*.properties'
filter(ReplaceTokens, tokens: [version : project.version])
}
}
Run Code Online (Sandbox Code Playgroud)