我有一个带有URL的H2数据库"jdbc:h2:test".我使用创建一个表CREATE TABLE PERSON (ID INT PRIMARY KEY, FIRSTNAME VARCHAR(64), LASTNAME VARCHAR(64));.然后我使用这个(空)表选择所有内容SELECT * FROM PERSON.到现在为止还挺好.
但是,如果我将URL更改为"jdbc:h2:mem:test",唯一的区别是数据库现在只在内存中,这给了我一个org.h2.jdbc.JdbcSQLException: Table "PERSON" not found; SQL statement: SELECT * FROM PERSON [42102-154].我可能在这里遗漏了一些简单的东西,但任何帮助都会受到赞赏.
我一直在寻找一种操作类似Arrays.equals(a1, a2)但忽略元素顺序的方法.我无法在Google Collections中找到它(类似的东西Iterables.elementsEqual(),但确实考虑到了排序)和JUnit(assertEquals()显然只是调用equals()Collection,这取决于Collection实现,而这不是我想要的)它会如果这样的方法会采用Iterables,那就最好了,但是我也可以简单地使用Collections这样的方法当然会考虑集合中的任何重复元素(所以它不能简单地测试containsAll()).
请注意,我不是在问如何实现这样的事情,我只是想知道是否有任何标准的Collections库都有它.
我正在使用HTML5通知API在Chrome或Firefox中通知用户.在桌面浏览器上,它可以工作.但是,在Chrome 42 for Android中,请求了权限,但未显示通知本身.
请求代码适用于所有设备:
if ('Notification' in window) {
Notification.requestPermission();
}
Run Code Online (Sandbox Code Playgroud)
发送代码适用于桌面浏览器,但不适用于移动设备:
if ('Notification' in window) {
new Notification('Notify you');
}
Run Code Online (Sandbox Code Playgroud) javascript html5 notifications google-chrome web-notifications
用更多信息重写了问题
我有一些Path使用相对路径创建对象的代码,如下所示:Paths.get("..", "folder").resolve("filename").后来,我想从它获取路径字符串"..\folder\filename"(我在Windows上,所以反斜杠).当我使用手动编译或从Eclipse运行此代码时,这很好.
但是,当我使用Maven运行它时,它不再起作用了.该toString()方法返回[.., folder, filename]而不是实际的路径字符串.使用path.normalize()没有帮助.使用path.toFile().getPath()确实返回我正在寻找的东西,但我觉得应该只使用nio.pathAPI 的解决方案.
我正在使用Jasmine(2.2.0)间谍来查看是否调用了某个回调.
测试代码:
it('tests', function(done) {
var spy = jasmine.createSpy('mySpy');
objectUnderTest.someFunction(spy).then(function() {
expect(spy).toHaveBeenCalled();
done();
});
});
Run Code Online (Sandbox Code Playgroud)
这按预期工作.但现在,我正在增加第二个级别:
it('tests deeper', function(done) {
var spy = jasmine.createSpy('mySpy');
objectUnderTest.someFunction(spy).then(function() {
expect(spy).toHaveBeenCalled();
spy.reset();
return objectUnderTest.someFunction(spy);
}).then(function() {
expect(spy.toHaveBeenCalled());
expect(spy.callCount).toBe(1);
done();
});
});
Run Code Online (Sandbox Code Playgroud)
此测试永远不会返回,因为显然done回调从未被调用过.如果我删除该行spy.reset(),测试确实完成,但显然在最后的期望中失败.然而,这个callCount领域似乎是undefined,而不是2.
我想在CSS :before元素中显示图像.
.withimage:before {
content: url(path/to/image.svg);
display: block;
height: 20px;
width: 20px;
}
Run Code Online (Sandbox Code Playgroud)
问题是,height和width应用于元素,但SVG不会缩小.如何将尺寸应用于之前创建的实际元素?
Plnkr示例:https://plnkr.co/edit/UgryaObojs6PCU579oGY
我在gradle中设置了集成测试源文件夹,如下所示:
subprojects {
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.8
configurations {
integrationTestCompile.extendsFrom testCompile
integrationTestCompileOnly.extendsFrom integrationTestCompile
integrationTestCompileOnly.extendsFrom testCompileOnly
integrationTestRuntime.extendsFrom testRuntime
}
sourceSets {
integrationTest {
java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
srcDir file('src/integrationTest/java')
}
resources.srcDir file('src/integrationTest/resources')
}
}
task integrationTest(type:Test) {
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
outputs.upToDateWhen { false }
}
}
Run Code Online (Sandbox Code Playgroud)
为了执行测试,这非常有效,但它会导致IntelliJ的检查出现问题,这可能会改变测试代码的行为.IntelliJ无法将源文件夹识别为测试源.
我尝试添加它们(内部subprojects):
idea {
module {
testSourceDirs += file('src/integrationTest/java')
}
}
Run Code Online (Sandbox Code Playgroud)
但这根本没有帮助.我还尝试手动将它们标记为测试源(上下文菜单 - >将目录标记为 - >测试源根目录),但IntelliJ会快速覆盖它回到正常的源根目录.
如何在Gradle中正确配置? …
我想使用注释@Provides为热切单例的方法进行绑定.我发现了错误216,这表明这是不可能的,但没有@Provides明确提到注释.
我目前有一个课程要求eager单身人士及时成为单身人士,但这不是一个非常好的解决方案.
public class LogicModule extends AbstractModule {
@Override public void configure() {
bind(SomeDep.class);
bind(MyWorkaround.class).asEagerSingleton();
}
// cannot add eager requirement here
@Provides @Singleton Logic createLogic(SomeDep dep) {
return LogicCreator.create(dep);
}
private static class MyWorkaround {
@Inject Logic logic;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以更改评论附近会使变通方法类过时的内容吗?
我有一个集成测试,其中一些设置是使用Guice完成的.我正在使用Mockito来模拟一些依赖项.到目前为止,这对我来说很好.我需要将PowerMock用于其他依赖项.现在Mockito正在NullPointerException加载一个自己的类:
java.lang.ExceptionInInitializerError
at org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter.<init>(ConditionalStackTraceFilter.java:17)
at org.mockito.exceptions.base.MockitoException.filterStackTrace(MockitoException.java:30)
at org.mockito.exceptions.base.MockitoException.<init>(MockitoException.java:19)
at org.mockito.exceptions.misusing.MockitoConfigurationException.<init>(MockitoConfigurationException.java:18)
at org.mockito.internal.configuration.ClassPathLoader.loadImplementations(ClassPathLoader.java:145)
at org.mockito.internal.configuration.ClassPathLoader.findPluginImplementation(ClassPathLoader.java:110)
at org.mockito.internal.configuration.ClassPathLoader.findPlatformMockMaker(ClassPathLoader.java:106)
at org.mockito.internal.configuration.ClassPathLoader.<clinit>(ClassPathLoader.java:59)
at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:21)
at org.mockito.internal.MockitoCore.<init>(MockitoCore.java:40)
at org.mockito.Mockito.<clinit>(Mockito.java:932)
<snip my test code and some Guice>
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.junit.internal.runners.ClassRoadie.runBefores(ClassRoadie.java:56)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:43)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:101)
at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.NullPointerException
at org.mockito.internal.exceptions.stacktrace.StackTraceFilter.<clinit>(StackTraceFilter.java:21)
... 39 more
Run Code Online (Sandbox Code Playgroud)
(修剪)代码:
@PrepareForTest(MyModule.class)
@RunWith(PowerMockRunner.class)
public class MyTest …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用CriteriaBuilderAPI 通过一个查询删除一堆对象.我正在寻找像这样的选择:
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<T> query = criteriaBuilder.createQuery(entityClass);
Root<T> root = query.from(entityClass);
query.select(root).where(/*some condition*/);
return entityManager.createQuery(query).getResultList();
Run Code Online (Sandbox Code Playgroud)
但后来删除而不是选择.据我所知,没有remove或delete方法CriteriaQuery.是否可以使用此API?
我当然可以执行select,然后调用entityManager.remove(object)每个结果,但这感觉非常低效.