Android Studio - Junit 4 - 在所有测试之前运行代码

Posted

技术标签:

【中文标题】Android Studio - Junit 4 - 在所有测试之前运行代码【英文标题】:Android Studio - Junit 4 - Running code before ALL tests 【发布时间】:2021-07-22 08:26:59 【问题描述】:

我有一个应用程序,无论何时打开该应用程序,我都想对其强制使用locale。所以我会在应用程序的onCreate()方法中使用Locale.setDefault(myCountryLocale).

单元测试不会启动该类,因此我希望能够在启动测试时设置相同的语言环境。通过扩展程序或 gradle 脚本设置语言环境,以便在运行测试的人使用其他语言环境时测试不会失败。

【问题讨论】:

您的问题解决了吗?如果是,你能告诉我怎么做吗? 【参考方案1】:

我知道这是有点旧的帖子,但我遇到了这个问题。 您可以扩展RunListener 类并覆盖testRunStarted,此代码块将在所有测试之前只运行一次。 此侦听器将像这样添加到您的测试清单中

<instrumentation
    android:name="androidx.test.runner.AndroidJUnitRunner"
    android:targetPackage="YOUR_APP_PACKAGE">
    <meta-data
        android:name="listener"
        android:value="YOUR_LISTENER_PACKAGE" />
</instrumentation>

【讨论】:

谢谢,如果可行,我会尝试并获得批准:P【参考方案2】:

您可以使用 JUnit 的 TestSuite 来实现。

package com.dinkar.test.sample;
import com.dinkar.test.sample.TestA;
import com.dinkar.test.sample.TestB;
import com.dinkar.test.sample.TestC;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

import java.util.Locale;

/**
 * @author dinkark on 29/04/20.
 * 
 */
@RunWith(Suite.class)
@SuiteClasses(TestA.class, TestB.class, TestC.class)
public class TestSuite 

    @BeforeClass
    public static void setUp() 
        System.out.println("set config required by all the test cases");
        System.out.println("This will only run once for all the test case included in TestA ,TestB, TestC");
        Locale.setDefault(myCountryLocale);// set your locale
    

    @AfterClass
    public static void tearDown() 
        System.out.println("clean up");
        System.out.println("This will also run once only for all the test case included in TestA ,TestB, TestC");
    
    


【讨论】:

这还不够,因为我必须手动编写套件中的所有类

以上是关于Android Studio - Junit 4 - 在所有测试之前运行代码的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio - Junit 4 - 在所有测试之前运行代码

错误记录Android Studio 编译时 lint 检查报错 ( Could not resolve junit:junit:4.+. )

Robolectric结合Android Studio的使用

在ANDROID STUDIO环境下使用JUNIT框架进行单元测试

Android Studio下使用Junit框架测试数组和

在Android Studio进行“简单配置”单元测试(Android Junit)