小编der*_*itz的帖子

通用断言(ArrayList,hasItems(InstanceOfSomeInterface))不起作用

我想使用Hamcrest的hasItems与"实际"的集合,是一个ArrayList<? extends SomeInterface>

assertThat(ArrayList<? extends SomeInterface>, hasItems(InstanceOfSomeInterface))
Run Code Online (Sandbox Code Playgroud)

编译器说:

assertThat(T, Matcher<T>)类型中的方法Assert不适用于参数(ArrayList<capture#9-of ? extends MyInterface>, Matcher<Iterable<MyInterface>>)

出了什么问题?我该怎么办(我真的想在这里使用Hamcrest)?

java generics junit hamcrest

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

如何配置缓存(番石榴)

我在我的gwt-webapp的服务器端使用guava的缓存.但要正确配置缓存我需要知道一些"遥测".首先,我需要知道一个缓存条目需要多少内存.到目前为止,我尝试了jconsole和visualvm.问题是,我不知道在哪里看.我查找了ConcurrencyHashMap及其条目,但找不到正确数量的实例.

那么分析一个(番石榴)缓存有什么好的,可能很简单的方法呢?

(目前我还没准备好支付一个工具来获得一个近似/平均大小的cach(条目))

讨论状态摘要:Aaron Digulla建议使用弱引用,让Java做管理内存的工作.但是在之前的一个问题中,由于使用弱引用的性能问题,人们建议"调整,监视,调整"缓存.

更新 确定我的问题可能是错误的 - 我不想知道有关缓存或其开销的一些事情.我想知道给定对象的实例有多大 - 配置缓存(在本例中为guava).我必须回答的第一个问题是:我可以获得内存中的所有实例(100%命中率)或者需要多少内存.如果可能,则不需要缓存配置.如果所有对象都会占用太多内存,我必须考虑配置.我希望有一个工具可以说明对象的平均内存占用情况.

java profiling guava

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

使用带连接字符串的Guava.Preconditions时是否会对性能产生影响?

在我们的代码中,我们经常检查参数Preconditions:

Preconditions.checkArgument(expression, "1" + var + "3");
Run Code Online (Sandbox Code Playgroud)

但有时,这个代码经常被调用.这会对性能产生显着的负面影响吗?我们应该切换到

Preconditions.checkArgument(expression, "%s%s%s", 1, var, 3);
Run Code Online (Sandbox Code Playgroud)

(我希望大多数情况下条件都是正确的.假意味着错误.)

java performance preconditions guava

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

如何配置npm以使用maven文件夹结构和war部署

我开始了我的第一个纯前端项目.我想将它部署到java/maven.所以我建立了一个正常的战争项目:

?   package.json
?   pom.xml
?   tsconfig.json
?   typings.json
?
?
????src
?   ????main
?       ????resources
?       ????webapp
?           ?   index.html
?           ?
?           ????app
?           ?       app.component.ts
?           ?       main.ts
?           ?
?           ????css
?           ?       styles.css
?           ?
?           ????WEB-INF
?                   web.xml
?
Run Code Online (Sandbox Code Playgroud)

我的问题是如何设置index.html /相对于包的源的路径.JSON?由于这是一个角度/打字稿项目,因此还有一些打字稿特定的东西.但我希望在包装json中一劳永逸地设置"源"路径?!

我也不确定我是否要直接在"webapp"中部署这些东西,因为有编译步骤.因此,欢迎任何关于如何构建用于maven/war部署的pur前端项目的建议.

war maven npm typescript angular

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

带有 @ExtendWith(MockitoExtension.class) 的 Spring Boot JUnit 5 测试不起作用 - 模拟为空,MockitoJUnitRunner 正在工作

我刚刚将我的项目从 Spring Boot 2.1 迁移到 2.3,因此现在有 JUnit 5(带有 Vintage)(还包括版本 3.3.3 的 mockito-core 和 mockito-junit-jupiter)。虽然所有 JUnit 4 测试工作正常,但我的第一个 JUnit 5 测试工作不正常:

@ExtendWith(MockitoExtension.class)
public class SomeTest {

    @InjectMocks
    private Some to;

    @Mock
    private SomeProperties properties;

    @Test
    public void applied() {
         ....
         //properties is null -> NPE
         when(properties.getSome()).thenReturn("some");
         ....
    }
Run Code Online (Sandbox Code Playgroud)

没有注入模拟(when 语句中的 NPE)。如果我切换到旧的 JUnit 4 样式,@RunWith(MockitoJUnitRunner.class)一切正常。

那么可能使用的是旧跑步者还是复古跑步者?

如何解决此问题并使用“@ExtendWith”进行测试?我以为我可以逐步迁移 - 让新测试使用 junit5 runner 运行。

junit mockito spring-boot junit5

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

@CamelSpringTest 和 @CamelSpringBootTest 有什么区别?

我刚刚开始一个结合 Spring Boot 和 Apache Camel 的项目(这似乎是一个非常好的组合)。

关于使用 JUnit 5 进行测试,Google 提供了此页面@CamelSpringTest如果您想同时拥有 Spring 和 Camel 的注释(我想要的),建议使用。

在页面的 和 处,有关于 JUnit 4 测试迁移的建议:

@RunWith(CamelSpringRunner.class) 的用法应替换为 @CamelSpringTest ... @RunWith(CamelSpringBootRunner.class) 的用法应替换为 @CamelSpringBootTest

我的问题是针对新项目/测试:两者在使用方面有什么区别。
代码当然存在差异,但我不知道原因是什么:

骆驼弹簧测试:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE })
@ExtendWith(SpringExtension.class)
@BootstrapWith(CamelTestContextBootstrapper.class)
@TestExecutionListeners(
                        value = {
                                CamelSpringTestContextLoaderTestExecutionListener.class,
                                StopWatchTestExecutionListener.class
                        },
                        mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
public @interface CamelSpringTest {

}
Run Code Online (Sandbox Code Playgroud)

CamelSpringBoot测试

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE })
@ExtendWith(SpringExtension.class)
@TestExecutionListeners(
                        value = {
                                CamelSpringTestContextLoaderTestExecutionListener.class,
                                CamelSpringBootExecutionListener.class,
                                StopWatchTestExecutionListener.class
                        },
                        mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
public @interface CamelSpringBootTest { …
Run Code Online (Sandbox Code Playgroud)

spring apache-camel spring-boot

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

google common cache - maximumSize的默认值(和其他"可选"设置) - 想要一个使用所有"可用"内存的缓存

我刚刚通过搜索缓存API 找到了Guava(它非常适合我的需求).但是在阅读wikiJavadoc时出现了一个问题- CacheBuilder可以采用什么设置的默认值?该Javadoc中的国家"这些功能都是可选的"和"创建一个新的CacheBuilder实例使用默认设置,包括强大的键,坚定的价值观,以及任何形式的自动驱逐."

在我看来,一个很好的默认值maximumSize是相对于Runtime.getRuntime().freeMemory();

最后,我想要一个使用给定系统上可用内存的缓存.所以我需要一个驱逐策略,询问有多少freeMemory()可用(可能相对于Runtime.getRuntime().maxMemory())

java memory caching heap-memory guava

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

如何在Jenkins托管的网格上使用Chromedriver设置Selenium

我只是用Selenium来完成我的第一步.我成功地设置了一个测试(Firefox驱动程序),在我的Jenkins上使用Selenium网格运行(使用Jenkins-Selenium-Grid插件).我还在运行Jenkins的机器(Server2003 64位)上安装了Chromdriver插件和Chrome本身.Chrome已为所有用户安装(在C:\ Program Files(x86)\ Google\Chrome\Application\chrome.exe中).问题是:我尽快尝试使用Chromedriver

UnreachableBrowserException: Could not start a new session. Possible causes are invalid     address of the remote server or browser start-up failure.
Run Code Online (Sandbox Code Playgroud)

由于Firefox测试运行良好,它必须是"浏览器启动"的问题?!所以第一个问题是:Chromdriver假定的chrome二进制文件的默认位置是什么?第二个问题:如何解决这个问题?是否有环境属性设置?或者我可以简单地将PATH设置为chrome.exe的位置.

更新:我挖了一下,ithink我遇到了这个那个.这个问题的解决方法是什么?

selenium jenkins selenium-chromedriver jenkins-plugins

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

gwt maven项目风味:WebAppCreator或gwt-maven-plugin-Archetype - 使用什么

我需要一个gwt项目的maven项目配置.配置应该在Eclipse(3.7!?)和控制台(mvn,jenkins ......)中运行.

我试过用gwt提供的webAppCreator:

webAppCreator.cmd -noant -maven -XnoEclipse -out WebAppCreated com.example.MyApp
Run Code Online (Sandbox Code Playgroud)

和gwt-maven-plugin Archetype.这两个项目在Eclipse中看起来非常相似,但它们具有非常不同的配置(不同的目录,并使用不同的插件).我认为如果项目发展(添加测试,资源......),它们会表现得非常不同.因为原型配置要小得多,我认为它更接近maven惯例 - 但这也更好吗?

两种配置的有效差异是什么?

你会建议什么配置作为起点?

java eclipse gwt maven

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

Websocket(java ee)如何获得当前用户的角色

我刚刚在我的java ee jax-rs应用程序中添加了一个Websocket端点.在Jax-Rs端点中,我可以通过SecurityContext访问用户的角色.

但是在websocket中我不能注入上下文的东西.那么如何知道试图打开websocket会话的用户的角色呢?

security java-ee websocket wildfly

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