小编Ben*_*Ben的帖子

无法使用PowerMockRunner运行JUnit测试

我有一个基于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).

问候和感谢任何帮助!本

java junit exception powermock

53
推荐指数
1
解决办法
4万
查看次数

Gradle java项目在构建期间替换文件中的单行

我有一个简单的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)

java build gradle

9
推荐指数
1
解决办法
1万
查看次数

是否有类似番石榴的c ++库?

是否有像guava(java)这样的c ++库,使用一些有用的方法,类和快捷方式扩展标准库.

c++ guava

4
推荐指数
1
解决办法
1649
查看次数

标签 统计

java ×2

build ×1

c++ ×1

exception ×1

gradle ×1

guava ×1

junit ×1

powermock ×1