Appium测试遭遇InvalidTestClassError问题求助
解决JUnit + Appium测试中的InvalidTestClassError错误
问题原因
- 你将JUnit的
@Test注解错误标注在了main()方法上。JUnit对测试方法有强制规范:必须是非静态方法、无参数,而main()方法本身是静态且携带String[] args参数的,完全违反了JUnit的校验规则,因此抛出InvalidTestClassError。 - 之前能正常运行是因为你当时是以Java应用程序的方式直接执行main方法,并未触发JUnit的测试类校验;重启后误选了JUnit测试运行方式,才触发了这个报错。
修正方案
移除main()方法上的@Test注解,将注解移到实际的测试方法testAutoMovil()上,同时调整测试方法为非静态(因为JUnit测试方法不能是静态的)。修正后的完整代码如下:
package com.example; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.remote.DesiredCapabilities; import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver; public class TestMovil { // @Test注解标注在非静态、无参数的测试方法上 @Test public void testAutoMovil() throws MalformedURLException{ AndroidDriver<MobileElement> driverAndroid; System.out.println("Creación del driver"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", "Redmi Note 8 Pro"); capabilities.setCapability("udid", "heifzt9xypk7jbtc"); capabilities.setCapability("platformName", "android"); capabilities.setCapability("platformVersion", "10"); capabilities.setCapability("appPackage", "com.xxx.xxx"); capabilities.setCapability("appActivity", "com.xxx.views.activities.contexts.login.LoginActivity"); URL url = new URL("http://localhost:4723/wd/hub"); driverAndroid = new AndroidDriver<MobileElement> (url, capabilities); driverAndroid.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); System.out.println("Aplicación comienza"); MobileElement iniciarSesion = driverAndroid.findElement(By.id("com.xxx.xxx:id/activity_onboarding_sign_in_button")); iniciarSesion.click(); // 测试结束后退出driver,避免资源占用 driverAndroid.quit(); } }
额外说明
- 如果需要保留
main()方法用于本地调试,只需去掉它上面的@Test注解即可。此时既可以通过Java应用程序方式运行main方法,也可以通过JUnit运行器执行标注了@Test的测试方法。 - 运行测试时确保选择JUnit测试运行方式,而非Java应用程序运行方式,这样JUnit才能正确识别并执行测试逻辑。
内容的提问来源于stack exchange,提问作者Zidaya
相关产品推荐
相关产品推荐

