小编Sma*_*key的帖子

如何在Maven中从父项目中排除依赖项?

例如,我有2个Maven项目.一个是"项目 - 父母".另一个是"项目孩子".显然,"项目 - 孩子"是"项目 - 父母"的子项目.

"project-parent"具有log4j的依赖关系.但是我想把它从"项目孩子"中排除.有办法吗?

你可能会说我应该将log4j从"project-parent"移动到"project-child".这是完全正确的.但我的假设是我不能修改"项目 - 父母"的POM.

提前致谢.

java maven

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

如何使用Powermock模拟void静态方法抛出异常?

我试图使用Powermock和Mockito来模拟一个void静态方法来抛出异常,如下所示.但我遇到了一个问题.除非我使用相同的参数对Adder.add()进行两次调用,否则IOException不会抛出模拟的东西.

顺便说一句,我已经添加@RunWith(PowerMockRunner.class)@PrepareForTest(Adder.class)在单元测试类.

class Adder{
    public static void add(int i) throws IOException{
        return;
    }
}

@Test
public void testAdder() throws IOException{
    PowerMockito.mockStatic(Adder.class);
    PowerMockito.doThrow(new IOException()).when(Adder.class);
    Adder.add(12);
    try {
        Adder.add(11);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    // assert things 
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.:)

答案如下.

在咨询http://code.google.com/p/powermock/issues/detail?id=278之后,实际上上面的Adder.add(12)是设置模拟静态方法的一部分.这意味着在使用参数12调用Adder.add()时,将抛出IOException.这很难理解,对吧?:)所以它应该写如下.

PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(anyInt());
Run Code Online (Sandbox Code Playgroud)

java unit-testing mockito powermock

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

如何在一个方法中编写UT来模拟内部对象?

例如,我有一个java类,如下所示.我将为doWork()编写一个单元测试,所以我想控制obj的行为.但很明显,obj是在内部实例化的.

我怎么写这个UT?现在我正在使用Junit + Mockito.

class ToBeTest{
    public ToBeTest(){}
    public boolean doWork(){
        OtherObject obj=new OtherObject();
        return obj.work();
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.:)

顺便说一句,现实是我正在为其他人的班级写UT.所以我不想改变它.它已通过集成测试进行了全面测试.

java unit-testing

13
推荐指数
1
解决办法
6043
查看次数

使用Powermock模拟类的构造函数时出现ExceptionInInitializerError.怎么解决?

这是我的情况.我有一个AbstractController类.它有一个子类控制器.在AbstractController的一个方法中,实例化了一个新的ApplicationLock.我想在为Controller编写ut时模拟ApplicationLock.我写了一个如下的测试用例.

@test
public void testMethod(){
    ApplicationLock mockLock=PowerMockito.mock(ApplicationLock.class);
    PowerMockito.when(mockLock.tryObtain()).thenReturn(true);
    PowerMockito.whenNew(ApplicationLock.class).withArguments(argThat(new IsFile()),anyString()).thenReturn(mockLock);
}
Run Code Online (Sandbox Code Playgroud)

我已经为测试类添加了必要的注释.

@RunWith(PowerMockRunner.class)

@PrepareForTest({AbstractController.class})

但是在运行此测试用例时出现以下错误.这是AbstractController中的静态初始化程序.

引起:com.acompany.controller.common.AbstractController中的java.lang.NullPointerException.(AbstractController.java:65)

private static final String DEFAULT_FOLDER = AbstractController.class.getProtectionDomain().getCodeSource()
            .getLocation().getPath();
Run Code Online (Sandbox Code Playgroud)

完整堆栈跟踪如下.

java.lang上的java.lang.Class.forName0(本机方法)中的java.lang.ExceptionInInitializerError,javassist上的javassist.runtime.Desc.getClassObject(Desc.java:44)中的java.lang.Class.forName(Class.java:169). run.Desc.getClassType(Desc.java:153)at javassist.runtime.Desc.getType(Desc.java:123)at javassist.runtime.Desc.getType(Desc.java:79)at com.acompany.controller.portfolio .controllerTest.testIncrementalFail(ControllerTest.java:195)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java) :25)在java.lang.reflect.Method.invoke(Method.java:597)在org.junit.internal.runners.TestMethod.invoke(TestMethod.java:66)在org.powermock.modules.junit4.internal. impl.PowerMockJUnit44RunnerDelegateImpl $ PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:307)在org.junit.internal.runners.MethodRoadie $ 2.run(我 thodRoadie.java:86)org.junit.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:94)at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl $ PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294)在org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl $ PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:112)在org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl $ PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:73)在Org.junit.internal的org.junm上,在org.junit.internal.runner.MethodRoadie.runTest(MethodRoadie.java:84)的org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl $ PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) .runners.MethodRoadie.run(MethodRoadie.java:49)at org.powermock.modules.junit4.internal.impl.PowerMo ckJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)在org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)在org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl $ 1.run (PowerMockJUnit44RunnerDelegateImpl.java:120)在org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)在org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)在org.powermock. modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:118)位于org.powermock.modules的org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:102). junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)在org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)在org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)在org.eclipse.jdt.internal. junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)在org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)在org.eclipse.jdt.internal.junit.runner. RemoteTestRunner.main(RemoteTestRunner.java:197)引起:com.acompany.controller.common.AbstractController中的java.lang.NullPointerException.(AbstractController.java:65)... 35更多

java testing unit-testing powermock

7
推荐指数
1
解决办法
7925
查看次数

如何让Eclipse正确使用Maven和SVN?

我从SVN检出了一个多模块Maven项目.我在Eclipse中安装了m2eclipse.然后我将项目导入Eclipse.一切都好.但是在我从SVN(Eclipse之外)更新我的Maven项目之后,Eclipse会给我很多错误和警告,除非我再次导入项目.这真的很烦人.我每次从SVN更新它时都必须导入项目.

有解决方案吗?

非常感谢.:)

java eclipse maven

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

无法连接到Tibco JMS服务器

我有一个java应用程序,它执行一些JMS发送和接收工作.但我发现了一个有趣的问题.例如,我为java.naming.provider.url设置了以下内容.

tcp://hostnameA.foo.bar:7222
Run Code Online (Sandbox Code Playgroud)

但是我得到了如下错误.仅包含主机名,而不是完全限定的域名.

javax.jms.JMSException: Failed to connect to the server at tcp://hostnameA:7222
Run Code Online (Sandbox Code Playgroud)

除非我手动在hosts文件中添加hostnameA,否则它将无法连接到Tibco服务器.

我该如何解决?

提前致谢.

java tibco jms

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

如果我知道它的文件名,有没有办法快速直接在Eclipse中找到一个java文件?

例如,我知道我有一个名为"HelloWorld.java"的java文件.我不喜欢浏览包层次结构以最终找到它.我想有一种方法让我输入这个文件名并直接打开它.

谢谢.

java eclipse

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

标签 统计

java ×7

unit-testing ×3

eclipse ×2

maven ×2

powermock ×2

jms ×1

mockito ×1

testing ×1

tibco ×1