小编svp*_*dga的帖子

小部件测试使用 WidgetsBinding.instance.addPostFrameCallback() 的小部件

我正在尝试在 flutter 中对一个小部件进行小部件测试,该小部件使用WidgetsBinding.instance.addPostFrameCallback()在小部件生命周期的一开始就显示一个对话框。

小部件工作正常,但我无法弄清楚如何进行小部件测试,因为测试的第一个 Expect() 是在触发此后帧之前执行的。

无论如何,要“告诉”测试等待所有后帧都被发送?

PD:tester.pump()、tester.pumpAndSettle()等不起作用

flutter flutter-test

10
推荐指数
1
解决办法
4356
查看次数

Symfony2中的"维护网站"页面

如何在Symfony2 Web应用程序中轻松清晰地实现"维护网站"页面?

我已经为Symfony 1找到了一些关于它的东西,但没有为Symfony2找到任何东西.

谢谢.

php symfony

9
推荐指数
1
解决办法
5682
查看次数

KMM + Compose:未解决的参考:drawable

我有一个 KMM 应用程序,其中 Android 目标使用 Jetpack Compose。当我尝试使用可绘制资源时出现以下错误:

e: [...]/OnboardingScreen.kt: (33, 46): 未解析的参考:drawable

这是尝试通过 访问可绘制对象的结果painterResource(id = R.drawable.ic_icon)

我已尝试以下方法来解决该问题:

  • 清理并构建项目
  • 使缓存无效并重新启动
  • 修复执行时的所有警告./gradlew assembleDebug
  • 静态 R 类已正确导入

以上都不能解决问题。

这是我的 android 模块的 build.gradle.kts:

plugins {
    id("com.android.application")
    kotlin("android")
}

val composeVersion = findProperty("version.compose") as String
val composeNavigationVersion = findProperty("version.composeNavigation") as String
val koinVersion = findProperty("version.koin") as String

android {

    compileSdk = (findProperty("android.compileSdk") as String).toInt()

    defaultConfig {
        applicationId = "com.app.app.android"
        minSdk = (findProperty("android.minSdk") as String).toInt()
        targetSdk = (findProperty("android.targetSdk") as String).toInt()
        versionCode = 1 …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-gradle-plugin android-jetpack-compose kotlin-multiplatform-mobile

8
推荐指数
2
解决办法
9900
查看次数

应用程序将无法在启用了即时运行的gradle 2.14.1的新Android Studio 2.2上执行

我刚安装了较新的Android Studio 2.2,在构建项目时遇到了麻烦:

Error:Execution failed for task ':app:processDebugAndroidTestResources'.
  java.io.FileNotFoundException: [path_to_project]/app/build/intermediates/symbols/androidTest/debug/R.txt (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

我正在使用gradle版本2.14.1(因为这个版本的IDE强迫我使用它).

如果我禁用即时运行一切正常,但突然失去这个功能是一种耻辱.

有帮助吗?

编辑:

我尝试了以下但错误仍然发生:

  • 清理项目.
  • 将项目作为外部源重新导入Android Studio.

android gradle android-studio instant-run android-studio-2.2

7
推荐指数
1
解决办法
925
查看次数

Google ML Kit:找不到“libbarhopper_v2.so”

我最近更改了我的旧条码/二维码扫描库,转而使用Google ML Kit 进行条码扫描,自从我这样做后,我通过 crashlytics 收到了一些我以前没有的新崩溃报告。

致命异常:java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.my.app-Q4EYyt2jmFlLaZ-mHL-J5A==/base.apk"],nativeLibraryDirectories=[/ data/app/com.my.app-Q4EYyt2jmFlLaZ-mHL-J5A==/lib/arm64, /system/lib64, /vendor/lib64, /product/lib64]]] 在 java 中找不到“libbarhopper_v2.so” .lang.Runtime.loadLibrary0(Runtime.java:1011) 在 java.lang.System.loadLibrary(System.java:1660) 在 com.google.android.libraries.barhopper.BarhopperV2.(BarhopperV2.java:5) 在 com .google.mlkit.vision.barcode.zza.a_(zza.java:7) 在 com.google.mlkit.vision.barcode.internal.zzf.b(zzf.java:17) 在 com.google.mlkit.common .sdkinternal.ModelResource.zza(ModelResource.java:1) 在 com.google.mlkit.common.sdkinternal.zzl.run(zzl.java:1) 在 com.google.mlkit.common.sdkinternal.zzp.run(zzp .java:3) 在 com.google。mlkit.common.sdkinternal.MlKitThreadPool.zzd(MlKitThreadPool.java:19) at com.google.mlkit.common.sdkinternal.MlKitThreadPool.zza(MlKitThreadPool.java:1) at com.google.mlkit.common.sdkinternal.zzh。在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 在 java.lang.Thread 运行(zzh.java:1) .run(Thread.java:784)

致命异常:java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.my.app-Y8cCSVtTMYVdnQQovlR0cw==/base.apk"],nativeLibraryDirectories=[/data/app/ com.my.app-Y8cCSVtTMYVdnQQovlR0cw==/lib/arm, /system/lib, /vendor/lib]]] 在 java.lang.Runtime.loadLibrary0(Runtime.java:1067) 中找不到“libbarhopper_v2.so”在 java.lang.Runtime.loadLibrary0(Runtime.java:1007) 在 java.lang.System.loadLibrary(System.java:1667) 在 com.google.android.libraries.barhopper.BarhopperV2.(BarhopperV2.java:5)在 com.google.mlkit.vision.barcode.zza.a_(zza.java:7) 在 com.google.mlkit.vision.barcode.internal.zzf.b(zzf.java:17) 在 com.google.mlkit .common.sdkinternal.ModelResource.zza(ModelResource.java:1) 在 com.google.mlkit.common.sdkinternal.zzl.run(zzl.java:1) 在 com.google.mlkit.common.sdkinternal.zzp。运行(zzp.java:3) 在com.google.mlkit.common.sdkinternal.MlKitThreadPool.zzd(MlKitThreadPool.java:19) 在com.google.mlkit.common.sdkinternal.MlKitThreadPool.zza(MlKitThreadPool.java:1)在 com.google.mlkit.common.sdkinternal.zzh.run(zzh.java:1) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run …

android qr-code barcode google-mlkit

6
推荐指数
1
解决办法
580
查看次数

在Twig中重复阻止

反正有没有像这样在树枝上重复一个块:

<title>{% block title %}{% endblock %} | MyBusiness</title>

<meta name="title" content="{% block title %}{% endblock %} | MyBusiness"/>
Run Code Online (Sandbox Code Playgroud)

为了只声明两个块一次?像那样:

{% block title %}   
The title I want to show in each title and metaTitle tags.{{ parent() }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

twig

5
推荐指数
1
解决办法
4333
查看次数

阻止Android Studio在运行时更改日志过滤器

我的Android Studio中有一些日志过滤器,每次运行项目时,日志过滤器都会更改为默认的app:packagename.有没有办法通过执行来保留一个自定义过滤器?

android android-studio

5
推荐指数
0
解决办法
41
查看次数

对 Mapper 转换方法进行单元测试的正确方法

我有一个 Mapper 类,其中包含一种将一种类型的用户转换为另一种类型的用户的方法:

/**
 * Transform new {@link User} to legacy {@link com.xxx.xxx.bo.bean.User}.
 * @param user User to transform.
 * @return Transformed user.
 * @throws MappingException If an error occurred when transforming.
 */
public com.xxx.xxx.bo.bean.User transform(User user)
        throws MappingException {

    try {

        com.xxx.xxx.bo.bean.User legacyUser =
                new com.xxx.xxx.bo.bean.User();
        legacyUser.setIdUser(user.getIdUser());
        legacyUser.setIdUserType(user.getIdUserType());
        legacyUser.setName(user.getName());
        legacyUser.setSurname(user.getSurname());
        legacyUser.setEmail(user.getEmail());
        legacyUser.setUserAccount(user.getUserAccount());
        legacyUser.setPassword(user.getPassword());
        legacyUser.setUserType(user.getUserType());
        legacyUser.setIsOnlyAgent(user.isIsOnlyAgent());
        legacyUser.setAgentId(user.getAgentId());
        legacyUser.setIdVaAgent(user.getIdVaAgent());
        legacyUser.setDesktopUrl(user.getDesktopUrl());

        return legacyUser;

    } catch (Exception e){
        throw new MappingException("Error when mapping User to legacy User: "
                + e.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

我写了一个测试来确保映射成功: …

java unit-testing mockito mapper

5
推荐指数
1
解决办法
2824
查看次数

ByteBuffer 到字节数组

我有一个 ByteBuffer,我需要将其内容添加到 POST 请求中,以便远程显示代表的图像;但我不知道该怎么做。

这样做是行不通的:

byteBuffer.array()
Run Code Online (Sandbox Code Playgroud)

我尝试将其转换为字节数组,但它不起作用,因为图像无法正确显示:

byte[] byteArray = new byte[byteBuffer.remaining()];
frame.duplicate().get(byteArray);
HttpResponse response = null;
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(URL);
post.setEntity(new ByteArrayEntity(byteArray));
Run Code Online (Sandbox Code Playgroud)

我也考虑过将其转换为图像并获取其字节数组,但我不知道如何做到这一点以及它是否有效......

任何帮助将不胜感激。

java arrays bytebuffer

3
推荐指数
1
解决办法
7572
查看次数

Flutter 小部件测试 - 等待未来完成

我在 flutter 中有一个小部件测试,它泵送被测小部件,当它打开时,执行后台操作 (staticWrapper.requestPermission()),该操作返回一个 Future,并根据其结果设置一个状态。问题是测试没有等待这个 future 完成,测试代码:

/// When micro permission denied, should show error message.
testWidgets('When micro permission denied, should show error message.',
    (WidgetTester tester) async {
  when(staticWrapper.requestPermission(Permission.RecordAudio))
      .thenAnswer((_) => Future.value(PermissionStatus.denied));
  await tester.pumpWidget(widget);
  final loginText = find.text(callScreen_microPermissionDenied);
  expect(loginText, findsOneWidget);
});
Run Code Online (Sandbox Code Playgroud)

受影响的小部件代码:

void _requestMicroPermission() async {
final result =
    await staticWrapper.requestPermission(Permission.RecordAudio);
debugPrint("Microphone permission status: $result");
if (result == PermissionStatus.authorized) {
  native.init();
} else {
  setState(() {
    _loginText = tnsManager.getText(TranslationsManager.callScreen_microPermissionDenied);
  });
}
Run Code Online (Sandbox Code Playgroud)

}

Expect() 方法在 setState() 调用之前调用。

有什么帮助吗?

flutter

3
推荐指数
1
解决办法
2683
查看次数