Tag: unit testing

JUnit:测试DAO – 回滚或删除

我正在使用JUnit 4测试一个非常简单的java应用程序。“简单”我的意思是没有弹簧和没有hibernate。 我需要测试数据访问层( JDBC , MySQL ),我怀疑哪种方法更适合这种测试? 在@After上插入数据并在@After上删除或在@Before上创建一个事务并在@After上回滚? 谢谢!

Spring3 / Hibernate3 / TestNG:一些测试给出了LazyInitializationException,有些则没有

前言:我在unit testing中遇到了LazyInitializationException,我很难理解它,你可以从我的问题中看到Spring , TestNG和Spring 3中的 数据库会话以及unit testingHibernate时的LazyInitializationException使用TestNG在Spring中使用的实体类 为了能够清楚地提出我的问题,我在GitHub上做了一个示例项目: http : //github.com/niklassaers/Sample-Spring3-App/在这个示例项目中,我重现了我面临的问题在我的Spring3 / Hibernate3 / TestNG项目中。 问题:我有两个unit testing,它们非常相似,使用相同的服务测试相同类的相同类。 一个运行,一个运行失败。 为什么失败的失败? (或者,为什么跑步者不会以同样的方式失败?) 这是失败的测试: @Test(timeOut=1000) public void Roles() { User mockUser = userService.read(1); Assert.assertNotNull(mockUser); Assert.assertTrue(mockUser.isValid()); Set roles = mockUser.getRoles(); int size = roles.size(); // This line gives a LazyInitializationException Assert.assertTrue(size > 0); } 完整代码( http://github.com/niklassaers/Sample-Spring3-App/blob/master/src/tld/mydomain/sample/entities/test/FailingUserUnitTest.java ) 这是运行测试: @Test […]

Spring MVC:如何从返回String的控制器方法unit testingModel的属性?

例如, package com.spring.app; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * Handles requests for the application home page. */ @Controller public class HomeController { @RequestMapping(value = “/”, method = RequestMethod.GET) public String home(final Model model) { model.addAttribute(“msg”, “SUCCESS”); return “hello”; } } 我想使用JUnit从home()测试model的属性及其值。 我可以将返回类型更改为ModelAndView以使其成为可能,但我想使用String因为它更简单。 但这不是必须的。 无论如何检查model而不改变home()的返回类型? 或者它无法帮助?

打破局部依赖关系以unit testingvoid方法

我正在使用mockito进行练习,但我对如何测试依赖于本地对象中方法调用的方法有点困惑。 请参阅以下示例: public class Worker { public void work() { Vodka vodka = new Vodka(); vodka.drink(); } } 这个工人不喜欢做自己的工作,而是喜欢喝酒。 但是我想补充一个测试来certificate他在工作时喝酒。 但是没有办法这样做,因为我必须validation调用方法工作时调用方法drink()。 我想你同意我的意见,这是不可能测试的,所以我需要在开始测试之前打破依赖。 这是我的第一个疑问,你认为打破这种依赖的最佳方法是什么? 如果我只是将伏特加对象的范围更改为全局,我认为不会很好(我不想将它暴露给类的其他部分)。 我想创建一个工厂,像这样: public class Worker { private VodkaFactory vodkaFactory = new VodkaFactory(); public void work() { Vodka vodka = vodkaFactory.getVodka(); vodka.drink(); } } 我不确定我是否确实打破了依赖关系,但我现在要做的是测试在执行work()时调用方法drink()。 我试了这个没有运气: @Test public void does_the_worker_drink_while_working () { VodkaFactory […]

如何对预期在applet安全管理器中运行的Java代码进行unit testing

我有一些Java库代码,有时作为未签名的applet运行。 因此,并不总是允许执行某些操作(例如检查系统属性)。 我想使用类似Applet的安全管理器运行一些unit testing,以便我可以validation代码是执行任何受限操作,还是正确处理任何安全exception。 使用真实的Security-Manager配置运行这些unit testing的最佳方法是什么? 优选的解决方案是可以与JUnit集成的东西。

如何通过Junit获得成功并暂停?

@Test (expected=TimeoutException.class,timeout=1000) public void fineForFiveSeconds() { foo.doforever(); fail(“This line should never reached”); } 这是我的测试代码。 我想要的是运行doforever()一段时间然后让测试成功。

可以选择将unit testing或集成测试添加到现有系统中,哪个更好开始,为什么?

我目前正在咨询现有系统,我怀疑正确的下一步是添加unit testing,因为正在发生的exception类型(空指针,空列表,无效的返回数据)。 但是,在应用程序中进行“个人投资”的员工坚持进行集成测试,即使报告的问题与特定用例失败无关。 在这种情况下,最好从unit testing还是集成测试开始?

使用Maven构建单独的JAR文件,以便对自定义类加载器进行unit testing

作为我当前项目的一部分,我创建了一个自定义类加载器。 自定义加载器的部分unit testing涉及使用一些JAR文件来演示加载器的正确行为。 我想在运行实际的unit testing之前从Java源构建测试JAR文件。 此外,测试JAR文件在运行unit testing时不能在类路径上,因为我想在测试执行期间动态加载它们。 是否有一种标准模式可以实现这种“在测试阶段之前在一侧构建一些JAR但是将它们排除在类路径之外”的要求? 我不敢相信我是第一个尝试使用Maven 2的人,但我似乎无法找到合适的POM结构和依赖关系。 通常我最终会在测试阶段之前没有构建一些测试jar,但是我也遇到了不一致的构建顺序的问题,导致构建在一台机器上正常工作,但是无法构建一些测试另一个jar子。

以编程方式实现TestNg套件并通过maven surefire执行它

如何使用java而不是testng.xml实现TestNG测试套件。 我遵循以下程序,但我不能用maven suefire插件运行它。 请帮忙 TestNG testNG = new TestNG(); List classList =new ArrayList(); List testList = new ArrayList(); List suiteList= new ArrayList(); List suiteNameList = new ArrayList(); XmlTest xmlTest= new XmlTest(); XmlSuite suite = new XmlSuite(); XmlClass xmlClass = new XmlClass(); xmlClass.setClass(bpsTestNg.class); classList.add(xmlClass); xmlTest.setClasses(classList); testList.add(xmlTest); suite.setTests(testList); suiteList.add(suite); suite.setName(“sampleSuite1”); suiteNameList.add(“sampleSuite1”) ; suite.toXml(); IConfiguration iConfiguration = null; […]

找不到兼容的方法:将对象传递给方法时出错?

我正在尝试为我们拥有的一些旧遗留代码编写junit 下面是我正在编写junit的DataLogger类中的方法,我正在使用jmockit – private Object[] extractMessageObjects(final Object… objects) { Object[] result = new Object[objects.length – 1]; System.arraycopy(objects, 0, result, 0, result.length); return result; } 所以下面的测试应该可行。 对? @Test public void testLogDebugWithStackTrace() { DataLogger logger = DataLogger.getInstance(ClientTest.class); Object obj[] = new Object[] {1}; Deencapsulation.invoke(logger, “extractMessageObjects”, obj); } 但我得到例外 – No compatible method found: extractMessageObjects(java.lang.Integer) 我在这里做错了吗?