Skip to content

Commit a3d56b5

Browse files
committed
Use Gradle Managed Devices to run unit tests on Android runtime
Switch android-test module from JVM tests to androidTest with Gradle Managed Devices (ATD API 30). Reuses existing unit tests from src/test/java/api/ via sourceSets. CI workflow boots headless emulator via pixel2api30DebugAndroidTest to catch ICU regex incompatibilities.
1 parent 10783a5 commit a3d56b5

2 files changed

Lines changed: 38 additions & 6 deletions

File tree

.github/workflows/android-test.yml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ on:
77
branches: [ main ]
88

99
jobs:
10-
build-android:
10+
android-test:
1111
runs-on: ubuntu-latest
1212

1313
steps:
1414
- uses: actions/checkout@v4
15-
- name: Set up Java 17 for AGP
16-
uses: actions/setup-java@v4
15+
16+
- uses: actions/setup-java@v4
1717
with:
1818
distribution: 'temurin'
1919
java-version: 17
@@ -22,5 +22,14 @@ jobs:
2222
- name: Build Java library JAR
2323
run: mvn package -Dmaven.test.skip=true
2424

25-
- name: Build Android module
26-
run: cd android-test && ./gradlew build
25+
- name: Enable KVM
26+
run: |
27+
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
28+
sudo udevadm control --reload-rules
29+
sudo udevadm trigger --name-match=kvm
30+
31+
- name: Run Android Tests
32+
working-directory: android-test
33+
run: >
34+
./gradlew pixel2api30DebugAndroidTest
35+
-Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect

android-test/build.gradle

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,33 @@ android {
1515
sourceCompatibility JavaVersion.VERSION_1_8
1616
targetCompatibility JavaVersion.VERSION_1_8
1717
}
18+
19+
sourceSets {
20+
androidTest {
21+
java {
22+
srcDirs = ['../src/test/java']
23+
include 'com/aspose/barcode/cloud/api/**'
24+
}
25+
}
26+
}
27+
28+
testOptions {
29+
managedDevices {
30+
localDevices {
31+
pixel2api30 {
32+
device = "Pixel 2"
33+
apiLevel = 30
34+
systemImageSource = "aosp-atd"
35+
}
36+
}
37+
}
38+
}
1839
}
1940

2041
dependencies {
2142
implementation files('../target/aspose-barcode-cloud-26.3.0.jar')
22-
testImplementation 'junit:junit:4.13.2'
43+
androidTestImplementation 'junit:junit:4.13.2'
44+
androidTestImplementation 'androidx.test:runner:1.5.2'
2345
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
46+
androidTestImplementation 'com.squareup.okhttp3:okhttp:5.3.2'
2447
}

0 commit comments

Comments
 (0)