在单元测试中,如何在我的(桌面)文件系统上读取json文件中的数据,而无需对路径进行硬编码?
我想从文件中读取测试输入(对于我的解析方法),而不是创建静态字符串.
该文件与我的单元测试代码位于同一位置,但如果需要,我也可以将其放在项目的其他位置.我正在使用Android Studio.
将SwipeRefreshLayout与叠加模式ActionBar结合使用时,加载动画将显示在操作栏后面,使其几乎不可见.
我可以做些什么来在动作栏上显示它吗?
有没有办法在gridview中的行之间显示(水平)分隔线?
我尝试在每个网格项下面放置一个小的分隔图像,但这不是一个解决方案,因为当一行未完全填充项目时,它不会跨越整行.
有没有办法在每一行之间添加图像?我只能找到改变行之间空间的方法.
我是Android Studio新手.我使用的是Android Studio 1.2预览版2,gradle 2.2.1和gradle插件1.1.0.
在尝试运行我的单元测试时,我无法解决此错误:
java.lang.RuntimeException: Method getInstrumentation in android.test.InstrumentationTestCase not mocked
Run Code Online (Sandbox Code Playgroud)
这是我的测试类:
public class AppPreferencesTest extends InstrumentationTestCase {
AppPreferences preferences;
@Before
public void setUp() throws Exception {
preferences = new AppPreferences(getInstrumentation().getTargetContext());
}
...
Run Code Online (Sandbox Code Playgroud)
在我的build.gradle中:
testCompile 'junit:junit:4.12'
Run Code Online (Sandbox Code Playgroud)
我尝试添加这个
testOptions {
unitTests.returnDefaultValues = true
}
Run Code Online (Sandbox Code Playgroud)
因为我在http://tools.android.com/tech-docs/unit-testing-support所遵循的步骤中提到过, 但它没有解决它.
我也试过创建一个MockContext:
preferences = new AppPreferences(new MockContext());
Run Code Online (Sandbox Code Playgroud)
但AppPreferences的构造函数比给出错误
public AppPreferences(Context context) {
preferences = PreferenceManager.getDefaultSharedPreferences(
context);
}
Run Code Online (Sandbox Code Playgroud)
...
RuntimeException: Method getDefaultSharedPreferences in android.preference.PreferenceManager not mocked.
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中调用ORMLite RuntimeExceptionDao的createOrUpdate(...)方法非常慢.
我有一个非常简单的object(Item),有2个int(一个是generatedId),a String和a double.我用下面的代码测试(大致)更新数据库中的对象所需的时间(100次).日志语句记录:
时间更新1行100次:3069
为什么在只有1行的表中更新对象需要3秒才能更新100次.这是正常的ORMLite速度吗?如果没有,可能是什么问题?
RuntimeExceptionDao<Item, Integer> dao =
DatabaseManager.getInstance().getHelper().getReadingStateDao();
Item item = new Item();
long start = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
item.setViewMode(i);
dao.createOrUpdate(item);
}
long update = System.currentTimeMillis();
Log.v(TAG, "time to update 1 row 100 times: " + (update - start));
Run Code Online (Sandbox Code Playgroud)
如果我创建100个新行,那么速度会更慢.
注意:我已经在使用了ormlite_config.txt.它记录"Loaded configuration for class ...Item"所以这不是问题.
谢谢.
有没有办法在每次实时构建完成时将Proguard映射文件自动复制到Android Studio中的(选定)目标APK目录?
如果我触摸我的WebView,有没有办法检查我的WebView,如果内容(网页)实际使用/消耗了触摸?
在这种情况下我想做什么:如果用户触摸屏幕侧边的边距:如果下面没有按钮,href等(当网页内容没有使用/消耗触摸时):自己使用它(在WebView中)启动自动滚动.我有权访问/可以更改内容.
是否可以从 Android Gradle 依赖项中排除包,使其不会最终出现在 APK 中?
作为:
dependencies {
compile('com.facebook.android:facebook-android-sdk:4.17.0') {
exclude package 'com.facebook.share'
}
}
Run Code Online (Sandbox Code Playgroud)
但随后不同,因为“包”不是有效的命令。
我的Gradle构建时间通常约为12秒,但是在大约10到20次构建之后,它会立即开始增加,指数增加:30秒,50秒,2分钟,5分钟等等,直至内存不足.
健康身材:
:app:compileDev21DebugJavaWithJavac 4.783s
:app:transformClassesWithRealmTransformerForDev21Debug 3.011s
:app:transformClassesWithDexForDev21Debug 2.133s
:app:compileRetrolambdaDev21Debug 1.325s
:app:packageDev21Debug 0.997s
:app:processDev21DebugResources 0.703s
Run Code Online (Sandbox Code Playgroud)
在10到20之后,它开始增加:
:app:transformClassesWithDexForDev21Debug 39.172s
:app:compileDev21DebugJavaWithJavac 34.221s
:app:packageDev21Debug 9.922s
:app:transformClassesWithRealmTransformerForDev21Debug 8.353s
:app:compileRetrolambdaDev21Debug 3.120s
:app:fabricGenerateResourcesDev21Debug 1.376s
Run Code Online (Sandbox Code Playgroud)
如您所见,每项任务都会及时增加.
我使用Android Studio 2.2.2,但自从最近3个版本以来我遇到了问题.Gradle 2.14.1.可能它与我们的项目有关.我使用Mac,我在Windows上的同事在同一个项目中也是如此.如果我停止AS,杀死Java并再次启动AS,这会解决它一段时间.
我还没有使用Jack编译器.
要明确:我的构建时间通常不慢:13秒就可以了.这不是所有"慢速构建时间"问题的重复.只有在10到20次构建之后,构建时间才会随着每次构建呈指数级增长.
更新:使Gradle构建"离线"没有帮助.使用"gradle-3.1-all.zip"(grade-wrapper.properties中的distributionUrl)也没有帮助.
有人有这个问题,知道解决方案吗?
是否可以Preview在 jetpack compose 中使用单独的资源,比如说不同的字符串文件或清单?
android ×10
gradle ×2
unit-testing ×2
dependencies ×1
gridview ×1
ormlite ×1
performance ×1
preview ×1
proguard ×1
touch ×1
webview ×1