使用JUnit 5运行需要访问隐藏/内部Android API的测试时,测试需要使用提升的权限运行。在应用程序的清单中,以下条目通常会被声明为android:sharedUserId=“android.uid.system”有没有可能配置单元测试以使用这种提升的权限来执行?
zpf6vheq1#
在对Android应用进行单元测试时,特别是在处理隐藏/内部API时,使用android:sharedUserId="android.uid.system"并不是一个可行的解决方案。相反,您可以创建androidTest源集并使用AndroidJUnitRunner编写测试。此外,Robolectric是一个测试框架,允许您编写在JVM上运行的单元测试(无需模拟器或设备)。
android:sharedUserId="android.uid.system"
androidTest
AndroidJUnitRunner
@RunWith(RobolectricTestRunner.class)public class MyUnitTest { @Before public void setUp() { // Setup any necessary configurations } @Test public void testSomething() { // Your test code here }}
@RunWith(RobolectricTestRunner.class)
public class MyUnitTest {
@Before
public void setUp() {
// Setup any necessary configurations
}
@Test
public void testSomething() {
// Your test code here
确保您已在应用的build.gradle文件中添加必要的依赖项,以测试JUnit和Robolectric等框架。
build.gradle
dependencies { // ... testImplementation 'junit:junit:4.13' testImplementation 'org.robolectric:robolectric:4.6.1'}
dependencies {
// ...
testImplementation 'junit:junit:4.13'
testImplementation 'org.robolectric:robolectric:4.6.1'
1条答案
按热度按时间zpf6vheq1#
在对Android应用进行单元测试时,特别是在处理隐藏/内部API时,使用
android:sharedUserId="android.uid.system"
并不是一个可行的解决方案。相反,您可以创建androidTest
源集并使用AndroidJUnitRunner
编写测试。此外,Robolectric是一个测试框架,允许您编写在JVM上运行的单元测试(无需模拟器或设备)。确保您已在应用的
build.gradle
文件中添加必要的依赖项,以测试JUnit和Robolectric等框架。