Android + PowerMock + Mockito + Maven构建错误与ClassNotFoundException

问题描述 投票:0回答:2

import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.when; import java.io.IOException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import android.util.Log; import com.generic_io.concurrent.ResultReceiverCallableFactory; @RunWith(PowerMockRunner.class) @PrepareForTest({ Log.class }) public class TestPowerMockTest { @Mock ResultReceiverCallableFactory callableFactory; @Before public void setUp() throws IOException { mockLogger(); } private void mockLogger() { PowerMockito.mockStatic(Log.class); when(Log.d(anyString(), anyString())).thenAnswer(new Answer<Integer>() { @Override public Integer answer(final InvocationOnMock invocation) throws Throwable { final String tag = (String) invocation.getArguments()[0]; final String msg = (String) invocation.getArguments()[1]; System.out.println("[" + tag + "] " + msg); return 0; } }); } @Test public void testPreconditions() { assertThat("ResultReceiverCallableFactory is null", callableFactory, is(notNullValue())); } }

我的pom.xml看起来像这样:

<dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>2.2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.generic_io</groupId> <artifactId>generic_io</artifactId> <version>1.0-SNAPSHOT</version> <type>jar</type> <scope>provided</scope> </dependency> <dependency> <groupId>com.pivotallabs</groupId> <artifactId>robolectric</artifactId> <version>1.0-RC1</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId> <version>1.4.9</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>1.4.9</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.8.5</version> <type>jar</type> <scope>test</scope> </dependency> <dependency> <groupId>net.sourceforge.cobertura</groupId> <artifactId>cobertura</artifactId> <version>1.9.4.1</version> </dependency> </dependencies>

当从CLI构建时,我会收到以下错误:
Tests in error:
  Test mechanism: java.lang.ClassNotFoundException: org.mockito.internal.progres
s.ThreadSafeMockingProgress

任何人都知道为什么我会遇到这个错误?帮助非常感谢...
    

您需要在这样的依赖项中添加dexmaker:
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.9.5</version>
    </dependency>
    <dependency>
        <groupId>com.google.dexmaker</groupId>
        <artifactId>dexmaker</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.dexmaker</groupId>
        <artifactId>dexmaker-mockito</artifactId>
        <version>1.0</version>
    </dependency>

,无论如何,我认为这与PowerMock不起作用。这个post
android maven mockito powermock
2个回答
1
投票

如果这随机帮助某人,我通过评论Surefire插件配置来经过相同的错误。

I有相同的错误,分析了Eclipse/Maven Class Paths,没有发现区别(除了“ /Eclipse/configuration/org.eclipse.osgi/bundles/320/1/1/.cp/”

在我的情况下,我以前曾在POM中为Surefire插件提供了测试(以解决其他问题)。我以为我只是尝试将其发表评论,然后再起作用。随机,但我以为我会继续下去。 完整,我评论的配置如下:

<!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.7.2</version> <configuration> <forkMode>never</forkMode> </configuration> </plugin> -->

0
投票

除了org.mockito.internal.progress.threadsafemockingprogress外,您的Maven配置看起来正确。

在执行以下命令时,您在看到哪个摩根图版?

mvn dependency:build-classpath -DincludeScope=test

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.