Tag: unit testing

被测试的类中的模拟类

我怎么能和Mockito一起模拟我class上正在测试的其他课程? 例如: MyClass.java class MyClass { public boolean performAnything() { AnythingPerformerClass clazz = new AnythingPerformerClass(); return clazz.doSomething(); } } AnythingPerformerClass.java class AnythingPerformerClass { public boolean doSomething() { //very very complex logic return result; } } 并测试: @Test public void testPerformAnything() throws Exception { MyClass clazz = new MyClass(); Assert.assertTrue(clazz.performAnything()); } 我可以欺骗AnythingPerformerClass从AnythingPerformerClass排除不必要的逻辑吗? 我可以覆盖doSomething()方法以简单返回true或false吗? 为什么我指定Mockito,因为我需要使用Robolectric进行Android测试。

Mockito – 拦截模拟上的任何方法调用

是否有可能以通用方式拦截模拟上的所有方法调用? 例 给定供应商提供的类如: public class VendorObject { public int someIntMethod() { // … } public String someStringMethod() { // … } } 我想创建一个模拟,将所有方法调用重定向到另一个具有匹配方法签名的类: public class RedirectedToObject { public int someIntMethod() { // Accepts re-direct } } Mockito中的when()。thenAnswer()构造似乎适合该法案,但我找不到任何方法调用与任何args匹配的方法。 无论如何,InvocationOnMock肯定会给我所有这些细节。 有没有通用的方法来做到这一点? 看起来像这样的东西,其中when(vo。*)被适当的代码替换: VendorObject vo = mock(VendorObject.class); when(vo.anyMethod(anyArgs)).thenAnswer( new Answer() { @Override public Object answer(InvocationOnMock invocation) { // […]

在没有maven或ant的Jenkins中自动运行JUnit测试

我目前正在与Jenkins建立一个持续集成工具。 我希望每次构建时都运行JUnit测试。 我的问题是,没有一个将要测试的项目使用maven或ant。 所以我想知道是否可以在没有maven或ant的情况下运行这些测试,如果是,我该怎么做? 提前感谢您的回答

Mockito间谍 – 在调用构造函数之前存根

我正在试图窥探一个Object,我想在构造函数调用它之前存根一个由构造函数调用的方法。 我的class级看起来像这样: public class MyClass { public MyClass() { setup(); } public void setup() { } } 不得调用安装方法。 那么,我如何监视这个方法(和存根设置,使它什么都不做)? 它可以很好地模拟方法,但我想unit testingMyClass ,所以我需要非常其他的方法。 之所以需要存根设置方法以便它什么都不做: 我正在编写一个Lego机器人(lejos),我在机器人需要工作的设置中放了一些代码。 但是,当我在TinyVM(安装在机器人上的VM)之外调用它时,java崩溃,因为VM尚未正确初始化(因为测试在我的PC上运行)。 对于unit testing,设置并不重要。 我不能存根类/方法设置调用,因为它们中的一些是公共静态最终变量。

如何在Java中测试写入文件?

我是初学者,掌握在手中。 我有一些简单的程序,我需要对write方法进行junit测试。 我在输入中有一些collections。 我怎么能这样做? 这是我的代码: // write to file public void write(String fileName, List figuresList) { try { PrintWriter out = new PrintWriter( new File(fileName).getAbsoluteFile()); try { for (int i = 0; i < figuresList.size(); i++) { out.println(figuresList.get(i).toString()); } } finally { out.close(); } } catch (IOException e) { System.out.println("Cannot write to file!"); } } […]

JUnit:@Before只针对一些测试方法?

我有一些常见的设置代码,我已经考虑了一个标有@Before的方法。 但是,并非所有这些代码都必须针对每个测试运行。 有没有办法对它进行标记,以便@Before方法仅在某些测试之前运行?

Java jUnit:在任何测试类之前运行的测试套件代码

我有一个测试套件类: @RunWith(Suite.class) @Suite.SuiteClasses({ GameMasterTest.class, PlayerTest.class, }) public class BananaTestSuite { 在包含实际测试的任何类之前,我需要使用什么注释来在此类中运行函数? 现在,我正在这样做,它可以工作,但它不是那么可读: static { try { submitPeelAction = new Player(new GameMaster(1)).getClass().getDeclaredMethod(“submitPeelAction”); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } submitPeelAction.setAccessible(true); } 我试过@BeforeClass但它没有用。

如何在junit中处理exception

我写了一些测试用例来测试一些方法。 但是有些方法会抛出exception。 我做得对吗? private void testNumber(String word, int number) { try { assertEquals(word, service.convert(number)); } catch (OutOfRangeNumberException e) { Assert.fail(“Test failed : ” + e.getMessage()); } } @Test public final void testZero() { testNumber(“zero”, 0); } 如果我传递-45 ,它将失败并出现OutOfRangeException但我无法测试特定的exception,如@Test(Expected…)

Spring:单元和集成测试

我正在寻找使用Spring设置单元和集成测试的最佳实践。 我通常使用3种测试: “真正的”unit testing(没有依赖) 测试作为“单元”测试(内存数据库,本地调用,模拟对象,……)或集成测试(持久数据库,远程调用,……)运行 测试仅作为集成测试运行 目前我只有第二类测试,这是棘手的部分。 我设置了一个基础测试类,如: @ContextConfiguration(locations = { “/my_spring_test.xml” }) public abstract class AbstractMyTestCase extends AbstractJUnit4SpringContextTests 而“单位”测试如下: public class FooTest extends AbstractMyTestCase 使用自动assembly的属性。 在不同(集成测试)环境中运行测试的最佳方法是什么? 对测试进行子类化并覆盖ContextConfiguration? @ContextConfiguration(locations = { “/my_spring_integration_test.xml” }) public class FooIntegrationTest extends FooTest 这是否有效(我目前无法在此轻松测试)? 这种方法的问题是“@ContextConfiguration(locations = {”/ my_spring_integration_test.xml“})”重复了很多。 有什么建议么? 此致,弗洛里安

将模拟bean注入spring环境进行测试

我知道有类似的问题,例如在这里 ,但是做了搜索,我找到了一个解决方案,我在这里更开心 然而,我唯一的问题是我不确定如何实现这个解决方案。 我希望能够做的是通过HotswappableTargetSource覆盖我的应用程序上下文中的选择bean的bean定义和我的测试版本,然后运行测试。 然后,对于每个测试用例,我想指定哪些bean我想要热插拔,然后每个测试必须能够创建自己的模拟版本并交换它们,并能够再次交换回来。 我能够获得运行测试的应用程序上下文,但我不知道如何配置bean可热插拔。 我知道如何在使用xml配置bean时这样做,但我不想回到使用xml来配置bean。