Tag: 测试

如何在运行测试时使Netbeans使用特定的JVM参数?

我正在使用Netbeans与Maven和TestNG。 使用maven surefire插件运行测试时,我可以设置一些配置参数,特别是用于我的测试(跟踪)的日志记录级别: -Dorg.slf4j.simpleLogger.defaultLogLevel=trace -Dorg.slf4j.simpleLogger.logFile=System.out 但是,在运行特定测试文件(CTRL + F6)或测试方法(“运行聚焦测试方法”)时,Netbeans不使用surefire(这是好的),因此忽略这些参数。 有没有办法在Netbeans以这种方式运行测试时更改使用的JVM参数? 这有点类似于其他post,但我的问题是针对Netbeans的。

使用maven进行集成测试:在测试之前运行jar并在之后终止

我有一个可运行的jar,我希望在集成测试开始之前(在pre-integration-test )在新进程中运行,并在集成测试完成后(在集成后pre-integration-test )终止它。 我可以使用的一个东西是maven-antrun-plugin或exec-maven-plugin来启动pre-integration-test新进程,但是如何终止呢? 也许对于我想要实现的目标有更好的解决方案? PS:我在Windows和Linux上都构建了我的项目,因此可移植性对我很重要。

多语言集成测试框架

想象一下,您拥有一个由不同组件构成的相当复杂的面向服务的体系结构。 组件使用不同的语言(Java,PHP,Ruby)编写,并以不同的方式相互通信(即UI,REST API,在某些情况下共享一些DB表等)。 我正在尝试为一些端到端测试设计集成测试框架。 我们已经对单个组件进行了单元/集成测试,但是我们希望构建一些能够端到端地完全测试我们部署的系统(在真实环境中)的东西,以确保function(根据个人的预期行为)组件正确提供,并且架构也正确配置。 我面临的第一个问题是我们的大多数UI都是用PHP编写的,并且已经使用Cucumber和顶部的几个插件为它编写了UI集成测试。 我正在编写的测试框架(用Java)应该触发这些function测试,然后检查相关组件的行为是否符合预期。 显然,我可以使用像Selenium这样的Java友好组件重写UI测试,但复制工作没有意义。 另一个解决方案是在Java中使用exec()调用运行现有测试,等待它们返回,可能解析输出并继续执行需要执行的其他操作/检查。 考虑到项目的编写方式,在Java中嵌入现有的PHP代码似乎不是一个可行的解决方案。 所描述的解决方案中没有一个听起来令我信服。 理想情况下,拥有某种多语言(和多技术)集成框架会很好,这种集成框架可以插入用不同语言和不同环境/组件编写的相同测试套件测试中。 有没有人知道朝这个方向发展的工具或框架? 如果没有,对这类问题有什么好处?

如何将Spring @Autowired必需属性转为false进行测试?

到目前为止,我一直在使用@Required注释来确保在Spring配置的应用程序中对我的bean进行DI。 要启用注释,需要在配置中声明RequiredAnnotationBeanPostProcessor bean。 在您的测试配置中,您只是不要声明它,因此如果不需要某些bean,您不必在配置中使用它们。 我想切换到更少的XML并使用@Autowired注释,但它默认为required = true,这对于运行时配置来说很好。 但我需要@Autowired才需要= false仅用于测试目的 – 同时保持运行时所需。 这有可能吗? 我找不到以声明方式将required属性设置为false的方法。 干杯

如何更改Play Framework 2“测试”设置以显示完整的堆栈跟踪?

我在Play框架中使用Java,并且我在通过IDE(IntelliJ)运行时通过了一些测试(function测试),但是当我通过控制台运行测试时失败了。 我的问题是测试日志中显示的堆栈跟踪只有2行,我需要完整的堆栈跟踪来查看那里发生了什么,我尝试了这里提到的任何设置组合: spec2设置都通过放置它们在build.sbt或在命令行中提供它们。 似乎没有效果! 这是我的build.sbt : version := “1.0-SNAPSHOT” libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, filters ) logBuffered in Test := false testOptions += Tests.Argument(TestFrameworks.JUnit, “-v”) testOptions += Tests.Argument(“fullStackTrace”,”true”) traceLevel := 50 有谁可以帮助我吗? 我正在使用Typesafe激活器(播放2.2.2)。 谢谢

用于测试私有方法的Java工具?

对私有方法测试的意义有不同的看法,例如, 这里和这里 。 我个人认为这是有道理的,问题是如何正确地做到这一点。 在C ++中你可以使用#define hack或者使测试类成为friend ,在C#中有InternalsVisibleToAttribute ,但是在Java中我们必须使用reflection或使它们“可见以进行测试”并对它们进行注释以便使它们成为可能 。意图清楚。 两者的缺点应该非常清楚。 我认为应该有更好的东西。 从…开始 public class Something { private int internalSecret() { return 43; } } 能够在测试代码中调用私有方法会很好 @MakeVisibleForTesting Something something = new Something(); Assert.assertEquals(43, something.internalSecret()); 这里的注释会使用reflection静默地将所有调用转换为something私有方法。 我想知道龙目岛是否可以做到(并会问作者)。 做这么多魔术很可能certificate太复杂了,无论如何它需要一些时间,所以我正在寻找一些替代方案。 也许用@Decapsulate注释正在测试的类,并使用注释处理器生成类Decapsulated_Something看起来像 public class Decapsulated_Something { public Decapsulated_Something(Something delegate) { this.delegate = delegate } public boolean internalSecret() { // […]

重构静态方法/静态字段以进行测试

我有以下遗留代码: public class MyLegacyClass { private static final String jndiName = “java:comp/env/jdbc/LegacyDataSource” public static SomeLegacyClass doSomeLegacyStuff(SomeOtherLegacyClass legacyObj) { // do stuff using jndiName } } 这个类在J2EE-Container中工作。 现在我想测试容器外面的类。 什么是最好的策略? 基本上允许重构。 允许访问LegacyDataSource(测试不必是“纯”unit testing)。 编辑:不允许引入其他运行时框架。

在maven测试期间找不到persistence.xml

我正在尝试在用于集成测试的maven构建期间将测试数据加载到测试数据库中。 persistence.xml正在被正确地复制到target/test-classes/META-INF/ ,但是在运行测试时我得到了这个exception。 javax.persistence.PersistenceException:没有名为aimDatabase的EntityManager的持久性提供程序 看起来它没有找到或加载persistence.xml。

maven – 当unit testing耗时太长时失败

我在我的项目中有很多unit testing,用JUnit和TestNG编写。 构建过程基于带有surefire插件的maven。 当至少一个unit testing花费太多秒时,maven是否有任何方法/插件可以使构建失败? 我知道有一些插件可以在TeamCity,Jenkins中构建失败,但这是“太过分了”。 在我的项目中,我希望只进行快速测试,以使unit testing过程有效。 我可以改进我的旧测试,但我需要保护未来的承诺

是否有可能与Mockito做严格的嘲笑?

我想使用严格的模拟,至少在第一次开发针对旧代码的一些测试时,因此如果我没有专门定义期望,那么在我的模拟上调用的任何方法都会抛出exception。 从我所看到的情况来看,如果我没有定义任何期望,Mockito将只返回null,稍后会在其他地方导致NullPointerException。 有可能吗? 如果有,怎么样?