小编LEO*_*LEO的帖子

如何打开robolectric日志

我需要一种非常简单的方法来让Robolectric 3.0开启日志记录.我想看看robolectric的输出,而不仅仅是我的测试.我在网上尝试的一切都无法正常工作.

我在哪里坚持这个?

robolectric.logging.enabled = true
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

在test/java/res中的robolectric.properties文件中

在test/java/resources中的robolectric.properties文件中

在test/res中的robolectric.properties文件中

在test/resources中的robolectric.properties文件中

在gradle中:

afterEvaluate {
    project.tasks.withType(Test) {
        systemProperties.put('robolectric.logging.enable', 'true')
    }
}
Run Code Online (Sandbox Code Playgroud)

在gradle中:

tasks.withType(Test) {
    testLogging.exceptionFormat = 'full'
    systemProperties.put('robolectric.logging.enable', 'true')
}
Run Code Online (Sandbox Code Playgroud)

android unit-testing robolectric

11
推荐指数
1
解决办法
2778
查看次数

关机后Android Activity Intent仍然存在

SETUP One Activity,SingleTop,从通知中接收意图.意图由活动消耗.用户点击后退按钮结束活动.调用onDestory并且isFinishing()返回true.长按Home键以显示最近的应用程序.启动先前已关闭的应用

当用户在活动上按下主键时调用onStop时,onNewIntent会出现类似的情况.

问题在完成活动后重新创建活动时,将使用与通知相同的意图.我不想要这个.有没有办法告诉系统我们已经消耗了该通知,因此停止将其提供给活动?解决?建议?

我试过了什么

  1. 我试图从意图中删除额外内容.不工作. Clearning Activity的意图数据随机返回,为什么?
  2. 我尝试使用saveInstanceState()来保持意图的时间戳.但是,当活动被销毁时,onIstanceState(Bundle)被删除(在onCreate中为null).
  3. 我试图在活动中将intent设置为null,但这不起作用

这个问题非常类似于以下问题:http://grokbase.com/t/gg/android-developers/119jyzf492/getintent-removeextra-in-activity-doesnt-work-for-android-launchmode-"singletask"

notifications android android-intent destroy android-activity

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

从 C# 调用 C++ 模板函数

我对 C# 的了解非常有限。我的目标是为我的 C# 同事提供 C++ dll API。由于遗留原因,该 dll 必须采用 C++ 语言。

问题 - C++ 模板函数(如下所示,来自 VS)可以在 C# 中封送吗?

class  __declspec(dllexport) Foo
{
public: 
    template <typename T> T* getFoo(T* fooData){return fooData;};
};
Run Code Online (Sandbox Code Playgroud)

如果没有,有什么建议吗?传递到模板函数的每个类型是否都应该有自己的函数,以便 C# 可以对其进行封送?

c# c++ templates marshalling

4
推荐指数
1
解决办法
2417
查看次数

将数据对象传递给Grand Central Dispatch Task的最佳方法

问题:使用Grand Central Dispatch(GCD)将数据(超出原语)传递给后台任务的首选/最佳/可接受的做法是什么?

目标C块的关注点是:块访问的变量被复制到堆上的块数据结构中,以便块稍后可以访问它们.复制的指针引用可能意味着多个线程正在访问同一个对象.

我对目标C和iOS仍然相当新,但我不是新线程(C++,Java,C,C#).

代码集#1(范围内的原始复制)

//Primitive int
int taskIdBlock = self->taskNumber;

//declare a block that takes in an ID and sleep time.
void (^runTask)(int taskId, int sleepTime);

//Create and assign the block
runTask = ^void(int taskId, int sleepTime)
{
    NSLog(@"Running Task: %d", taskId);
    // wait for x seconds before completing this method
    [NSThread sleepForTimeInterval:sleepTime];

    //update the main UI
    //tell the main thread we are finished with this task.
    dispatch_async(dispatch_get_main_queue(), ^
                   {
                       NSLog(@"Completed Task %d",taskId);
                   });
}; …
Run Code Online (Sandbox Code Playgroud)

multithreading objective-c grand-central-dispatch

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

Android 的自定义 Gradle 测试任务

问题

我想创建一个自定义 gradle 测试任务以仅运行 JUNIT 测试并省略 Robolectric 测试。我试图通过创建一个新的测试注释并省略包含该新注释的任何测试来完成此任务。

错误

当我运行 gradle 任务时,不包含 JUNIT 包。

error: package android.test.suitebuilder.annotation does not exist
import android.test.suitebuilder.annotation.SmallTest;
Run Code Online (Sandbox Code Playgroud)

细节

新注释

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface RobolectricTest {
}
Run Code Online (Sandbox Code Playgroud)

摇篮文件

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

repositories {
    mavenCentral()
    maven { url     'http://artifactory.ops.am1.qa.ext.bamgrid.com/artifactory/mobile-resources' }
    maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
}

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.google.gms:google-services:1.3.0-beta1'
    }
}

android {
    compileSdkVersion rootProject.ext.compileSDKVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId "com.example"
        minSdkVersion 17
        targetSdkVersion rootProject.ext.targetSdkVersion
        buildConfigField …
Run Code Online (Sandbox Code Playgroud)

android unit-testing gradle robolectric

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

为什么我必须投入Kotlin而不是Java?

问题:为什么我必须在Kotlin中输入类型而不是在Java中?

我有一个java方法:

processAction(Observable<Action> actions)
Run Code Online (Sandbox Code Playgroud)

我在测试(Java)中调用它:

when(myMock.processAction(any(Observable.class))).thenAnswer(...)
Run Code Online (Sandbox Code Playgroud)

我把它叫做测试(Kotlin):

when(myMock.processAction(any(Observable::class.java) as Observable<Action>).thenAnswer(...)
Run Code Online (Sandbox Code Playgroud)

回购这里

java kotlin

2
推荐指数
1
解决办法
108
查看次数