Java 如何测试依赖于活动的代码

Java 如何测试依赖于活动的代码,java,android,unit-testing,android-activity,android-resources,Java,Android,Unit Testing,Android Activity,Android Resources,我已经编写了在Android上截图的代码,我正在尝试为此编写一个测试。运行测试方法时,我收到以下错误消息:活动从不成为请求状态“[已启动、已创建、已销毁、已恢复]”(last lifecycle transition=“PRE\u ON\u CREATE”)。我很难弄清楚我做错了什么 生产代码已经过手动测试 我在src/androidTest/java/org/app中的测试代码: @RunWith (AndroidJUnit4.class) public class ScreenshotsCa

我已经编写了在Android上截图的代码,我正在尝试为此编写一个测试。运行测试方法时,我收到以下错误消息:
活动从不成为请求状态“[已启动、已创建、已销毁、已恢复]”(last lifecycle transition=“PRE\u ON\u CREATE”)
。我很难弄清楚我做错了什么

生产代码已经过手动测试

我在
src/androidTest/java/org/app
中的测试代码:

@RunWith (AndroidJUnit4.class)
public class ScreenshotsCaptorTest {
    @Rule
    public ActivityScenarioRule<TestActivity> rule =
        new ActivityScenarioRule<>(TestActivity.class);

    @Test
    public void test() {
        // This line is never reached
        ActivityScenario<TestActivity> scenario = rule.getScenario();
        scenario.onActivity(activity -> {
            activity.setCallback(() -> {
                try {
                    Bitmap screenshot = ScreenshotsCaptorBuilder.captor.takeScreenshot();
                    // Assert screenshot is non-null
                } catch (CaptureScreenshotFailedException e) {
                    throw new RuntimeException(e);
                }
            });

            Intent intent = ScreenshotsCaptorBuilder.intent(activity);
            activity.startActivityForResult(intent, 100);
        });
    }
}
import org.app.test.R;

public class TestActivity extends Activity {
    private Callback callback;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // This line is never reached
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
    }

    public void setCallback(Callback callback) {
        // This line is never reached
        this.callback = callback;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        // This line is never reached
        ScreenshotsCaptorBuilder.createCaptor(this, resultCode, intent);
        callback.done();
    }

    public interface Callback {
        // This line is never reached
        void done();
    }
}
src/androidTest/AndroidManifest.xml
文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="org.app">

    <application>
        <activity
                android:name=".TestActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

如果有人给我一些建议或提示来解决我的问题,那将非常有帮助。提前谢谢。

我这里也有同样的问题。奇怪的是,我在matther上找到的另一个相关页面是两年前的,有人声称在不久之后的某个版本中修复了它。但是,我仍然有1.3.0中的bug。而且似乎。同时,我使用的解决方案将她描述为旁路:我这里也有同样的问题。奇怪的是,我在matther上找到的另一个相关页面是两年前的,有人声称在不久之后的某个版本中修复了它。但是,我仍然有1.3.0中的bug。而且似乎。同时,我使用的解决方案将她描述为旁路:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</androidx.constraintlayout.widget.ConstraintLayout>