在尝试让Robolectric RC3在Android Studio中运行时,我得到了
Caused by: java.lang.RuntimeException: build/intermediates/bundles/debug/AndroidManifest.xml not found or not a file; it should point to your project's AndroidManifest.xml
at org.robolectric.manifest.AndroidManifest.validate(AndroidManifest.java:120)
at org.robolectric.manifest.AndroidManifest.getResourcePath(AndroidManifest.java:469)
at org.robolectric.manifest.AndroidManifest.getIncludedResourcePaths(AndroidManifest.java:475)
at org.robolectric.RobolectricTestRunner.createAppResourceLoader(RobolectricTestRunner.java:479)
at org.robolectric.RobolectricTestRunner.getAppResourceLoader(RobolectricTestRunner.java:471)
at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:73)
at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:421)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:234)
Run Code Online (Sandbox Code Playgroud)
我试过了
@Config(manifest = "app/src/main/AndroidManifest.xml", constants = BuildConfig.class, sdk=21)
Run Code Online (Sandbox Code Playgroud)
我尝试在我的TestRunner中设置清单位置,没有任何效果.在文件系统中,我看到清单在
./app/build/intermediates/manifests/full/debug/AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)
不在Robolectric寻找它的位置.有一次,清单被忽略了,然后资源发生了类似的问题,应用程序或Robolectric找不到我的应用程序使用的原始资源.这是在我的构建文件中:
sourceSets {
main {
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/res']
}
test {
java.srcDirs = ['src/test/java', 'src/main/java']
resources.srcDirs = ['src/test/res', 'src/main/res']
}
}
Run Code Online (Sandbox Code Playgroud)
我如何告诉Robolectric在哪里寻找清单,更重要的是,在哪里寻找资源?
编辑:我已经从github检查了Robolectric,我已经构建了它,将它安装在我当地的.m2 repo中,gradle文件现在引用了本地SNAPSHOT构建,我确保Gradle没有从一个新版本获得远程回购.然后我将RobolectricGradleTestRunner复制到我的项目中,我更改了定义文件位置的行:它不包含模块名称.现在它有效.
我有一个测试计划,其中有多个线程组.
我想按顺序运行所有线程组.
线程组如下:
Thread Group1
Thread Group2
Thread Group3
. . .
Thread GroupN
Run Code Online (Sandbox Code Playgroud)
我在互联网上阅读了不同的博客和文章,人们声称线程组将按照定义的顺序运行,但显然它们不属于我的情况.线程组4在线程组1之前运行.线程Group4正在生成一个错误的报告,因为它在Thread Group1之前运行.
如何确保线程组的排序?
另外,我需要实现以下场景:
单个用户多次运行单个请求(单个用户应从单个HTTP请求创建1000个帐户).
多个用户同时多次运行多个请求(多个用户应同时从单个HTTP请求创建1000个帐户).
怎么办?
PS:请在回复之前仔细阅读并理解查询.
我在Eclipse中使用最多的关键组合是Ctrl + Click.它向我展示了一种方法的实现.在Android Studio中,它向我显示界面,而不是实现.
在Android Studio中似乎没有"show implementation"shurtcut,或者在那里?
我正在 Spring JPA 中配置一个数据库,我想知道spring.datasource.initialization-mode
. 我发现这个页面具有共同的属性,但它没有给出所有可能的值。我希望有一些关于您可以设置的所有属性的所有可能值的文档。
我正在使用我的道具部分中的applicationContext.xml
属性作为属性entityManagerFactory
<util:properties id="props">
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL82Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.ddl-auto">create</prop>
<prop key="spring.jpa.show-sql">true</prop>
<prop key="spring.jpa.generate.ddl">true</prop>
<prop key="spring.jpa.hibernate.ddl-auto">create</prop>
<prop key="spring.datasource.initialization-mode">always</prop>
<prop key="spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation">true</prop>
</util:properties>
Run Code Online (Sandbox Code Playgroud) 这不是一个问题,因为我已经找到了答案.
新的Android SDK 17对jar文件进行了更严格的依赖性检查.
与此同时,他们添加了一个我认为以前不存在的罐子.我的项目遇到了annotations.jar
SDK中的新内容与我已经使用过的内容之间的冲突.如果它们具有相同的原点,那么替换另一个将起作用.
我的annotations.jar来自jetbrains,通过Guice依赖,因此替换它不起作用.这是我得到的错误:
[2012-03-22 10:54:27 - MyApp] Jar mismatch! Fix your dependencies [2012-03-22 10:54:46 - MyApp] Found 2 versions of annotations.jar in the dependency list, [2012-03-22 10:54:46 - MyApp] but not all the versions are identical (check is based on SHA-1 only at this time). [2012-03-22 10:54:46 - MyApp] All versions of the libraries must be the same at this time. [2012-03-22 10:54:46 - MyApp] Versions found are: [2012-03-22 10:54:46 - MyApp] Path: …
编辑:我现在正在使用杰克(杰克音频连接套件).见下面的答案.
我的Raspberry Pi上有一个声卡,有8个输出声道(四个立体声声道),一张Octosound卡.我想要做的是选择其中一个通道来传送声音.使用此代码我打印声卡的信息:
mixers = AudioSystem.getMixerInfo();
for (Mixer.Info mixerInfo : mixers) {
logger.debug("\n");
logger.debug("Found Mixer: " + mixerInfo);
Mixer m = AudioSystem.getMixer(mixerInfo);
Line.Info[] sourceLines = m.getSourceLineInfo();
for (Line.Info li : sourceLines) {
logger.debug("Found source line: " + li + " " + li.getClass());
if (li instanceof Port.Info) {
Port.Info portInfo = (Port.Info) li;
logger.debug("port found " + portInfo.getName() + " is source " + portInfo.isSource());
sourceDataLines.add(portInfo);
}
}
Line.Info[] targetLines = m.getTargetLineInfo();
for (Line.Info li : targetLines) {
logger.debug("Found target …
Run Code Online (Sandbox Code Playgroud) Android Studio今天早上为我的项目添加了外部库.现在在构建我的项目时,我得到了
Warning:Ignoring Android API artifact com.google.android:android:4.1.1.4 for debug
Run Code Online (Sandbox Code Playgroud)
有谁知道这意味着什么?
最近开始学习spring boot,data jpa。正如我可以看到这个,弹簧引导数据JPA起动器使用jakarta.persistence-api
,而不是javax.persistence-api
:
<artifactId>spring-boot-starter-data-jpa</artifactId>
...
<dependencies>
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<exclusions>
<exclusion>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
</exclusion>
...
</exclusions>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
jakarta.persistence-api
和之间有什么区别javax.persistence-api
?这次更换的原因是什么?
我使用Robolectric进行单元测试,我的项目中有Google Play服务.直到昨天,当Google Play服务更新为新版本时,此工作正常.我收到此错误:
java.lang.NullPointerException
at com.google.android.gms.common.GooglePlayServicesUtil.zzh(Unknown Source)
at com.google.android.gms.common.GooglePlayServicesUtil.zzd(Unknown Source)
at com.google.android.gms.common.GoogleApiAvailability.isGooglePlayServicesAvailable(Unknown Source)
at com.google.android.gms.common.api.zzg$zze.zznn(Unknown Source)
at com.google.android.gms.common.api.zzg$zzi.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Process finished with exit code 255
Run Code Online (Sandbox Code Playgroud)
似乎没有调用Shadow类,调用GooglePlayServicesUtil给出NullPointerException.有没有人见过这个?
我甚至没有在测试中使用Google Play服务.
我有以下疑问。我想知道为什么在使用 JPA 和 Hibernate 时,在ManyToOne或OneToMany关系中执行预加载时,它会调用数据库以获取实体信息,但另外还会生成后续查询来获取每个子项。
另一方面,当使用带有 JOIN FETCH 的查询时,它会按照我的预期执行查询,一次获取所有信息,因为 fetchType 表示为“EAGER”。
这是一个简单的例子:
我有一个班级学生,它与班级教室有多对一的关系。
@Entity
@Table(name = "STUDENT")
public class Student {
@ManyToOne(optional = true, fetch = FetchType.EAGER)
@JoinColumn(name = "ClassroomID")
private Classroom mainClass;
Run Code Online (Sandbox Code Playgroud)
另一边有一个名为 Classroom 的类,如下:
@Entity
public class Classroom {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "mainClass", fetch = FetchType.EAGER)
private List<Student> studentsList;
Run Code Online (Sandbox Code Playgroud)
在获取Classroom对象时,它会执行一次查询从自身获取信息,并执行后续查询以获取每个classRoom对象的studentsList中包含的每个学生的信息。
第一个查询:
Hibernate:
/* SELECT
r
FROM
Classroom r
LEFT JOIN
r.classStudents */
select
classroom0_.id as id1_0_,
classroom0_.number as number2_0_
from …
Run Code Online (Sandbox Code Playgroud) android ×5
java ×4
hibernate ×2
jpa ×2
robolectric ×2
spring-boot ×2
audio ×1
dependencies ×1
jack ×1
jmeter ×1
load-testing ×1
raspberry-pi ×1
spring ×1
testing ×1
upgrade ×1