使用phpunit,我正在嘲笑PDO,但是我正在尝试找到一种准备多个数据库查询语句的方法. $pdo = $this->getPdoMock(); $stmt = $this->getPdoStatementMock($pdo); $pdo->expects($this->any()) ->method('prepare') ->with($this->equalTo($title_query)) ->will($this->returnValue($stmt)); $title_stmt = $pdo->prepare($title_query); $desc_stmt = $pdo->prepare($desc_query); 我想传达类似于"使用"方法的onconsecutivecalls的东西,因此我可以准备多个语句,如上所述. 您将如何执行此操作? 解决方案 您可以通过用$this->at()而不是$this->any()>编写单独
以下是关于 junit 的编程技术问答
反思会打破私人方法的想法吗?因为可以从班级外访问私人方法? (也许我不明白反思的含义或错过其他东西,请告诉我) http:///en.wikipedia.org/wiki.org/wiki/wiki/reflection_ reflection_ reflection_ reflection_; 编辑: 如果连接打破了私人方法的想法 - 我们是否仅用于程序逻辑而不是用于程序安全性? ? 谢谢 解决方案 我们是否仅使用私人方法用于程序逻辑,而不是用于程序安全? 尚不清楚您所说的"程序安全性".安全性无法在真空中讨论;您正在考虑保护哪些威胁? CLR代码访问安全系统旨在保护用户数据的资源免受敌对的部分信任的代码的威胁. 因此,CLR中反射,访问控制和安全性之间的关系是复杂的.简短而不是完全准确,规则是: 完全信任意味着完全信任. 完全信任的代码可以访问该过程中的每一点内存.包括私有字段. 通过许可控制部分信托中的私人信托的能力;如果未授予,
如何使用Junit的远程Phantomjs驱动器配置硒?我一直在试图为此找到一个教程,但没有运气.我的目标是将其用于在Spring MVC中用于我的单页应用程序. 解决方案 经过一些试验和错误后,我达到了以下解决方案.此配置用于Junit测试类 private URI siteBase; private static PhantomJSDriverService service; private WebDriver driver; protected static DesiredCapabilities dCaps; @BeforeClass public static void createAndStartService() throws IOException { service = new PhantomJSDriverService.Builder().usingPhantomJSExecutable(new File("/path/to/phantom
在最后一周,我创建了两个班级,我的团队对他们的表现表示了一些担忧.为了评估我的代码,我编写了一些简单的JUNIT测试,这些测试通过构建丰富的测试数据集来行使这些类,然后通过相关的方法为数千次迭代提供数据.我记录了每次迭代的运行时间,然后使用循环和System.nanoTime()记录了高,低和平均时间.最终,我有Junit断言,高和平均时间在可接受的限制之内.这种测试方法使我的团队对此代码有信心. Junit是以这种方式测试性能的正确工具吗?是否有更好的工具可以在单元(方法和类)级别测试性能? 解决方案 可能有更好的方法,但是还有一些框架可以帮助用Junit实施基准测试.一些有用的实践是热身跑步,统计评估.看看 junitbenchmarks 和 junitperf 编辑似乎已经提出了junitbenchs的弃用.该项目的维护者建议转到其他解决方案 否. JUNIT专为单位测试而设计.在Java编写绩效测试时,需要注意很多事情.使用看我如何在Java中写正确的微基准
在我的活动中,我在onCreate()中获得帐户: public void MyActivity extends Activity{ ... private Account[] accounts; @Override protected void onCreate(){ accounts = AccountManager.get(this).getAccounts(); } ... } 现在,我是单元测试MyActivity在测试项目中: public class MyActivityTest extends ActivityInstrumentationTestCase2 { ... @Override protected void setUp() throws Exception{ super.setUp(); //How to mock u
我一直在使用Java8 V进行演示测试. Java8公共功能. 情况如下: 我有一个有10个人(5名男性和5位女性)的列表. 我想知道哪个女人的年龄在18至25岁之间 现在,当我执行这些步骤时,结果将是: lambda with foreach拿走:395毫秒(使用junit 396毫秒) 公共功能采用:173 ms(使用Junit 169毫秒) lambda带收集的lambda:334毫秒(使用junit 335毫秒) 现在,我没想到lambda的执行时间是两次的长达六倍,而不是常规功能. 所以,现在我非常想知道我是否错过了这里的东西. 源可以在这里找到:pastebin.com/BJBk4Tu6 跟进: 将列表扩展到1.000.000项目 并过滤所有年轻的成年女性 结果是: lambda with foreach take:59 ms 公共功能采用:15 ms lambda带收集的lam
在开发Grails 1.0.5应用程序时,我对grails test-app命令的慢速感到震惊.即使实际测试仅需大约10秒钟,整个执行也总计 真正的1M26.953S 用户0m53.955s SYS 0M1.860S 这包括Grails boottagping,加载插件,编译所有代码等等 关于如何加速grails test-app执行的任何提示将不胜感激. 解决方案 您可以使用交互式模式来加快测试运行. 刚运行 grails interactive 然后键入 test-app 第一次将与往常相同,但是在此之后的每一次都将变得更快.当前有一些交互式模式的问题(例如,运行几次后用完了内存),但我仍然觉得值得. 其他解决方案 没有任何速度加速的艰难规则,并且您看到的性能问题可能是您应用程序的特定规则. 如果您的引导花费约75秒,听起来很长.我会仔细观察您在Bootstrap.groovy文件中的任何内容,以查看是否可以减少.
我有一个开源库,该库有大量的单元测试,可以比较字符串形式的数字. 这些测试通过en-GB,en-US和其他文化中的良好通过,其中数字通常以1,234.00的形式编写. 然而,在德国和法国等文化中,这些价值的格式是不同的,测试失败了. 如何将JUNIT测试被迫以en-GB>? 运行 edit 这种东西在Nunit. 解决方案 我不确定所有JVM的标准是否是标准的,但是在Windows上使用Oracle的JVM,您可以使用user.language和user.country System属性在启动JVM时设置该语言环境: java -Duser.language=en -Duser.country=GB ... 当然,您也可以使用 在Java中设置默认场所 Locale.setDefault(new Locale("en", "GB")); 请注意,Double.toString是无关的. 其他解决方案 您如何启动Junit? 通
我在从 neo4j-tutorial "> neo4j-tutorial "> 我在Windows 7上使用以下版本的Intellij: Intellij Idea 2016.1.3构建#IC-145.1617,建于2016年6月3日JRE: 1.8.0_92-B14 AMD64 JVM:Java热点(TM)64位服务器VM Oracle Corporation 我已经用ant generate.eclipse.project生成了ant generate.eclipse.project的东西,如读书中所写.但是,当我尝试运行koan时,我会面对StackOverflowErrror 这是堆栈跟踪的一部分: Information:Using javac 1.7.0_80 to compile java sources ... Information:java: at com.sun.tools.javac.comp.AttrContext.dup(Attr
spring-test 提供在测试过程中加载弹簧上下文的注释.例如,有一个org.springframework.test.context.junit4.SpringJUnit4ClassRunner junit runner类,org.springframework.test.context.ContextConfiguration org.springframework.test.context.ContextConfiguration用于指定上下文加载.对于集成测试,上下文加载可能很长,在调试期间,需要进行相同的测试,直到"丢失"所有错误.有没有多次加载上下文的方法可以这样做?例如,我完成了调试上下文加载,然后运行该上下文并在Intellij Idea中开始运行测试? Intellij Idea是否可以? 解决方案 很久以前没有答案,这很奇怪,这很重要,因为它可以节省大量资源和时间. 如果您有一个带注释的课程 @SpringBootTest public cla
我已经编写了下面的简单Java脚本,以了解有关TDD,Intellij和Java本身的更多信息. import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.junit.matchers.JUnitMatchers.both; public class JUnit_Dummy { private StringJoiner joiner; private List strings; @Befor
在Eclipse中,(如果我没记错的话)几乎没有启动时间,我几乎可以立即进行Junit测试.这意味着我可以在几秒钟内进行CodeChange+测试周期. 我最近迁移到Idea Intellij,如果您上次更改了任何源代码,则似乎必须在运行单元测试之前"制作"该项目.这通常需要20秒钟,这太长了,特别是对于测试驱动的开发. 我可以在运行配置中取消选中"在启动前"复选框,但随后执行测试而无需编译最近的更改. " make"期间的警告输出表明它至少在某些时间进行了某个方面的编织.我想,单位测试通常不需要方面. 我的猜测是,每次更改源文件时,Eclipse都会不断地在后台编译,并且在不进行编织方面的情况下迅速进行操作. 如何加快我的codechange+测试周期? 更多信息:我在编译器设置中检查了"背景中的编译". Java编译器是com.springsource.org.aspectj.tools-1.6.8.release.jar.jar 中的AJC.
所以,我有这个@Component班级,用于从kafka聆听主题 @Component @Data @Slf4j public class KafkaConsumer { public List saveReserveStock = new ArrayList(); @KafkaListener(topics = "topic") public void listenReserveStock(ConsumerRecord consumerRecord) { System.out.println("=================================================================="); System.out.println("consuming records at: " + DateTime.now().toLocalDateTime());
我正在使用Junit4进行测试.我的测试课在test-> java-> com.example-> Productit.java中如下 当我在项目上运行MVN CLEAN安装时,下面的测试未识别且未运行. 但是,当我将测试类重命名为Product Test时,它可以正常工作. 我不明白区别.我重命名时为什么可以工作? @ContextConfiguration(locations = {"classpath:META-INF/spring/test-config.xml"}) @RunWith(SpringJunit4ClassRunner.class) public class ProductIT{ @Autowried private ProductServiceImpl serviceImpl; @Test public void test() throws Exception{ assertNotNull(serviceImpl)
我有一个日食(不是Maven)项目,其中我在两个源文件夹中组织了代码:SRC和TEST. 测试文件夹的层次结构与SRC平行,以使找到类并保持井井有条. 现在,我在谈论我的单位测试.我也想将单元测试与集成测试分开,但是我不确定最好的方法是什么. 也许我应该还有另一个源文件夹仅用于集成测试?还是应该在测试源文件夹中的单独包装下? 我很高兴听到您的工作方式,谢谢您. 解决方案 人物意见(因为这里完全是关于个人偏好的)是:不同测试级别的单独软件包 src/ //source folder ... test/ // source folder test/ //packages integration/ unit/ tools/ 我亲自停止维护测试课程的源软件包层次结构,因为当您重构来源时,我发现它非常昂贵. 我还使用JUNIT类别以可见的方式清楚地分离测试级别. 其他解决方案 您的直觉很好:另一个源文件夹可能是最佳选择
我正在尝试为我的一个休息应用程序之一编写集成测试用例,该应用程序在内部使用mongoDB持续 @DataMongoTest @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class MainControllerTest { @LocalServerPort private int port = 8080; /* some test cases*/ } 但我要低于错误 java.lang.IllegalStateException: Configuration error: found multiple declarations of @BootstrapWith for test class [com.sample.core.controller.MainControllerTest]: [@org.springframework.test.context.Bootstr
什么有效地知道通过JUNIT测试触摸了哪些类的有效方法? 对知道,我正在用 jacoco 代码每行的代码覆盖信息,然后我可以弄清楚使用了哪些类. 可以执行此操作,而无需在代码级别的行中启动所有代码? 解决方案 您可能可以在ClassLoader级别上做某事(这是某些代码覆盖工具的工作方式 - 从内存中,Emma做到这一点,并且是开源的).然后,您只能记录加载哪些类.您也许可以从其中一种OSS覆盖工具中分解一些东西. 其他解决方案 我使用 cobertura 提供了很多关于覆盖范围的不错统计数据,可以通过突出显示来显示代码覆盖率您的代码. 有Eclipse,Maven,Hudson,Jenkins的插件...尽管我不得不承认我没有尝试过任何其他工具来覆盖. 其他解决方案 好吧,我不确定如何使用Jacoco做到这一点,但是您肯定需要一个代码覆盖工具才能知道您的代码已涵盖了哪些部分:)
我有一个基本测试方案,该方案将由其他集成测试使用.此场景包括一些用于外部集成的模拟豆(@MockBean). 今天,我在集成测试类中有类似的东西: @SpringBootTest @WebAppConfiguration @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) @RunWith(SpringRunner.class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class OrderIT { 以及准备我的集成测试的字段和注释: private MockMvc mockMvc; @Autowired private WebApplicationContext wac; @Autowired private ObjectMapper mapper; @MockBean private SomeGateway s