我找不到有关如何使用Android Studio / Gradle设置powermock的任何信息。我尝试过的所有内容都会导致构建异常。
有人能说出正确的方法吗?
感谢。
答案 0 :(得分:51)
我发帖是为了帮助未来的读者,你需要在AS中为powermock添加这些依赖
testCompile 'junit:junit:4.12'
testCompile 'org.powermock:powermock-api-mockito:1.6.2'
testCompile 'org.powermock:powermock-module-junit4-rule-agent:1.6.2'
testCompile 'org.powermock:powermock-module-junit4-rule:1.6.2'
testCompile 'org.powermock:powermock-module-junit4:1.6.2'
答案 1 :(得分:24)
将以下行添加到依赖项{}块:
testCompile 'org.powermock:powermock-api-mockito:1.6.5'
如果您想使用PowerMockito,请添加以下行:
<ImageButton
android:id="@+id/bt_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:enabled="false"
android:src="@drawable/ic_arrow_right"
android:text="@string/bt_next" />
<ImageButton
android:id="@+id/bt_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/bt_next"
android:layout_toStartOf="@+id/bt_next"
android:layout_marginEnd = "8dp"
android:background="@null"
android:src="@drawable/ic_info" />
<TextView
android:id="@+id/tv_resultmessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" />
<ImageButton
android:id="@+id/bt_praxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/bt_back"
android:layout_toRightOf="@+id/bt_back"
android:layout_marginStart = "8dp"
android:background="@null"
android:src="@drawable/ic_praxis" />
<ImageButton
android:id="@+id/bt_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:src="@drawable/ic_arrow_left"
android:text="@string/bt_back" />
<ProgressBar
android:id="@+id/pb_quiz"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/bt_back"
android:padding="5dp"
android:progress="1" />
答案 2 :(得分:4)
在构建脚本中,添加以下内容:
sourceSets {
unitTest {
java.srcDir file('*your test directory*') //for example: tests/java
}
}
android {
sourceSets {
instrumentTest.setRoot('*your root test directory*') //for example: tests
}
}
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.11'
testCompile 'org.powermock:powermock-mockito-release-full:1.4.9'
}
然后,从命令行执行gradle unitTest。
希望有效。如果没有,请发布命令行的输出。
答案 3 :(得分:4)
如果你想使用更新版本的Mockito,你可以使用这样的东西,它是从mockito 2 Powermock docs改编的。请确保使用right version of PowerMock for the given version of Mockito。
...
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:2.4.0"
testCompile 'org.powermock:powermock-module-junit4:1.7.0RC2',
'org.powermock:powermock-api-mockito2:1.7.0RC2'
答案 4 :(得分:3)
// mockito
testImplementation 'org.mockito:mockito-core:2.4.0'
androidTestImplementation 'org.mockito:mockito-core:2.4.0'
// PowerMock
testImplementation 'org.powermock:powermock-core:1.7.0RC2'
testImplementation 'org.powermock:powermock-module-junit4:1.7.0RC2'
testImplementation 'org.powermock:powermock-api-mockito2:1.7.0RC2'
答案 5 :(得分:1)
我的示例从我能找到的所有其他答案中汇编而成,并在撰写本文时提供了最新版本:
app\build.gradle
dependencies {
testImplementation group: 'junit', name: 'junit', version: '4.13'
...
testImplementation group: 'org.powermock', name: 'powermock-api-mockito2', version: '2.0.7'
testImplementation group: 'org.powermock', name: 'powermock-module-junit4', version: '2.0.7'
}
一个测试类,其中模拟了Android Log
类。
import android.util.Log;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest({Log.class})
public class DateUtilsTest {
@BeforeClass
public static void beforeClass() {
PowerMockito.mockStatic(Log.class);
}
...
}
答案 6 :(得分:0)