小编Ori*_*ion的帖子

Android:单元测试服务

我目前正在尝试使用TDD编写Android应用程序.我已经完成了编写一项在应用程序中非常重要的服务的任务.

至于这个原因,我正在尝试为服务编写适当的测试.Android指南声明如下:

"测试内容"主题列出了测试Android组件的一般注意事项.以下是测试服务的一些具体指导原则:

  • 确保调用onCreate()以响应Context.startService()或Context.bindService().同样的,你应该确保的onDestroy()被调用响应Context.stopService(),Context.unbindService(),stopSelf(),或stopSelfResult().测试您的服务是否正确处理来自Context.startService()的多个调用.只有第一个调用触发Service.onCreate(),但所有调用都会触发对Service.onStartCommand()的调用.

  • 另外,请记住,startService()调用不能嵌套,所以Context.stopService()或Service.stopSelf(单次调用)(但不stopSelf(INT))将停止服务.您应该测试您的服务在正确的位置停止.

  • 测试您的服务实现的任何业务逻辑.业务逻辑包括检查无效值,财务和算术计算等.

来源:服务测试| Android开发者

我还没有看到对这些生命周期方法的适当测试,对Context.startService()等的多次调用.我试图解决这个问题,但我现在处于亏损状态.

我正在尝试使用ServiceTestCase类测试服务:

import java.util.List;

import CoreManagerService;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Before;
import org.junit.Test;

import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;
import android.content.Intent;
import android.test.ServiceTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.Log;

/**
 * 
 * This test should be executed on an actual device as recommended in the testing fundamentals.
 * http://developer.android.com/tools/testing/testing_android.html#WhatToTest
 * 
 * The following page describes tests that should be written for a service.
 * http://developer.android.com/tools/testing/service_testing.html
 * TODO: Write tests that check …
Run Code Online (Sandbox Code Playgroud)

service android unit-testing junit4

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

Android - 使用ORMLite DAO作为ContentProvider

我在Google IO演示文稿中看到了模式C,我非常渴望实现这种模式.但是,我确实喜欢ORMLite库,并且想在我的应用程序中使用这个库.

当我说谷歌IO演示时,我的意思是这个:https://www.youtube.com/watch? v = xHXn3Kg2IQE由Virgil Dobjanschi提供.

现在我一直在寻找一个实现,它向我展示了如何将ORMLite与Contentproviders结合使用.

现在我的问题是ORMLite DAO与Contentprovider冲突.他们基本上做同样的事情并且很难相互融合.(使用Ormlite与Android的内容提供商合作,其他人讨论此事并同意此声明.)

一些库已经将ORMLite实现到contentprovider API模式中,例如:https://github.com/blandware/android-atleap

然而,在水下他们仍然将模型还原为ContentValues(简单类型).

Android - 使用Dao Pattern with contentProvider 这个问题与我的情况类似,但是3年前,我建议在下面提供替代解决方案.

@ jcwenger的回答非常有用,但我想知道过去3年是否有任何改变.我面临同样的问题,也许现在因为ORMLite已经成熟,使用ORMLite更有意义吗?

我旁边的同事真的非常想使用ORMLite,因为他不想自己编写任何映射.我知道atleap和Android-OrmLiteContentProvider项目的存在.这些只为活动提供了一个光标,我的同事希望拥有模型列表或单个模型.这可以实现吗?

我的同事建议编写我自己的Cursor,SyncAdapter实现?和Contentprovider(必须完成)必须使用模型.但是,使用列表等仍然可以实现相同的功能吗?将事件传递给contentobservers等活动?

这可行吗?

编辑 我们很可能会私下使用内容提供者.我们不需要公开这些内容提供者.然而,内容提供商提供的优势是巨大的.当数据发生变化时,我怎样才能通知我的GUI更新?

我还必须在一个活动中显示来自多个表(连接和其他数据,不包含在同一个表中)的数据并下载图像等.

android ormlite android-contentprovider

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

Linq选择在内存中执行的非重复计数

我正在努力了解LINQ如何转换为SQL。

我正在尝试使用LINQ生成以下查询。

SELECT [OrganizationId]
  ,[DepartmentId]
  ,[LocationName]
  ,[Group1]
  ,[Group2]
  ,[Group3]
  ,[BooklistId]
  ,[BooklistName]
  ,COUNT(DISTINCT [OrdererId])
  ,MAX([ExpectedDate])
FROM [Orders]
WHERE ([DepartmentId] IS NOT NULL AND ([DepartmentId] = '<Guid>')) AND ([Schoolyear] = '2018')
GROUP BY [OrganizationId]
  ,[DepartmentId]
  ,[LocationName]
  ,[Group1]
  ,[Group2]
  ,[Group3]
  ,[BooklistId]
  ,[BooklistName]
ORDER BY [BooklistName]
Run Code Online (Sandbox Code Playgroud)

使用索引,此查询将在200毫秒内执行。

我的LINQ查询如下:

await _context
            .Orders
            .Where(i => i.DepartmentId != null && i.DepartmentId.Equals(Parameters.DepartmentId))
            .Where(i => i.SchoolYear.Equals(Parameters.SchoolYear))
            // Group the data.
            .GroupBy(orders => new
            {
                orders.BooklistId,
                orders.BooklistName,
                orders.OrganizationId,
                orders.DepartmentId,
                orders.LocationName,
                orders.Groep1,
                orders.Groep2,
                orders.Groep3
            })
            .OrderBy(i => i.Key.BooklistName)
            .Select(i => new …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework-core

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

将记录器消息写入文件和textarea,同时保持Java中的默认行为

我目前正致力于在.log文件中记录来自我的应用程序的消息.到目前为止这工作正常,但现在我正在尝试将相同的消息输出到textarea.我一直在使用默认记录器.

这样我就有一个类可以完成记录到.log文件的所有工作,并将相同的输出写入textarea以供管理员查看.

这是一个Java swing JFrame应用程序,只包含一个textarea(我需要的全部).后台有很多工作,所有这些活动都必须记录下来进行审查/调试.

我一直在找一个很好的例子,所以我想知道你们是否可以帮助我.

java logging textarea

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