gpt4 book ai didi

java - 如果PowerMock测试之前运行,则本地集成测试将失败

转载 作者:行者123 更新时间:2023-12-02 20:41:03 30 4
gpt4 key购买 nike

我已经编写了针对Windows上运行的HBase的本地集成测试,使用HBaseTestingUtility设置了HBase的本地实例:

public class HBaseTestServer extends ExternalResource {
private HBaseTestingUtility hbaseUtility;

@Override
protected void before() throws Exception {
System.setProperty("test.build.data.basedirectory", "C:/Temp/hbase");
this.hbaseUtility = new HBaseTestingUtility();
this.hbaseUtility.startMiniCluster();
}
...

如果我自己运行集成测试类,则效果很好。但是,该类在另一个测试类之后运行,该测试类使用PowerMock模拟HBase:
@RunWith(PowerMockRunner.class)
@PrepareForTest({HBaseAdapter.class, Connection.class, ConnectionFactory.class})
public class HBaseAdapterTest {
...

如果我在项目上运行所有测试,则PowerMock HBaseAdapterTest首先运行,并且集成测试失败并显示以下错误:
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:606)
at org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:977)

这里发生了什么?我想我需要在集成测试运行之前清除所有PowerMock模拟,但是我找不到在线有用的东西。

对于任何对依赖项感到好奇的人:
compile 'org.apache.hadoop:hadoop-client:2.8.1'
compile 'org.apache.hbase:hbase-client:1.1.2'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:2.8.0'
testCompile 'org.powermock:powermock-api-mockito2:1.7.0RC2'
testCompile 'org.powermock:powermock-module-junit4:1.7.0'
testCompile 'org.powermock:powermock-core:1.7.0'
testCompile 'org.powermock:powermock-module-junit4-rule:1.7.0'

最佳答案

根据Tom的评论,在单独的实例中运行测试解决了我的问题。在build.gradle中,我添加了:

test {
forkEvery 1
}

关于java - 如果PowerMock测试之前运行,则本地集成测试将失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49730238/

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