小编Sle*_*led的帖子

使用PowerMock模拟私有方法,但仍会调用基础方法

我试图嘲笑模拟一个正在进行JNDI调用的私有方法.当从单元测试调用该方法时,它会抛出异常^.我想嘲笑这种方法用于测试目的.我使用了来自另一个问题答案示例代码,并且在测试通过时,似乎仍然调用了基础方法.我System.err.println()doTheGamble()方法中插入了一个,然后打印到我的控制台.

有趣的是,如果我将第一个注释掉assertThat,测试就会通过.?:(

那么,我如何模拟私有方法,以便它不被调用?

import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.powermock.api.support.membermodification.MemberMatcher.method;

import java.util.Random;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest(CodeWithPrivateMethod.class)
public class PowerMock_Test {

    static boolean gambleCalled = false; 

    @Test(expected = RuntimeException.class)
    public void when_gambling_is_true_then_always_explode() throws Exception {
        CodeWithPrivateMethod spy = PowerMockito.spy(new CodeWithPrivateMethod());

        when(spy, method(CodeWithPrivateMethod.class, "doTheGamble", String.class, int.class))
                .withArguments(anyString(), anyInt())
                .thenReturn(true);

/* 1 */ assertThat( …
Run Code Online (Sandbox Code Playgroud)

java junit mockito powermock

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

什么是用于Java桌面应用程序的最佳数据库

以下哪个数据库最适合大型桌面应用程序:Firebird,JavaDB,hsqldb?我需要性能,易用性和完全免费的许可证.

java database firebird

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

如何从匿名内部类调用特定的父构造函数?

好的,所以我知道匿名内部类要么隐式扩展父类,要么实现接口,因此需要调用超类的构造函数.但是,我不确定如何为匿名类创建构造函数(如果这是可能的)并且没有定义构造函数我不知道如何调用super()!这是我的练习代码:

public class AnonymousConstructor {
    public static void main(String[] args) {
        //I'm not sure how to explicitly call one of the arg super constructors
        MyBob my = new MyBob() {
            //I would like to do something like this super("String"); or      
            //super("String", "String");
        };

    }
}

class MyBob extends Thread {
    MyBob() {
        System.out.println("No arg constructor");
    }
    MyBob(String a) {
        System.out.println("Arg constructor");
    }
    MyBob(String a, String b) {
        System.out.println("2 arg constructor");
    }
    public void run() {
        System.out.println("Outer");
    }
}
Run Code Online (Sandbox Code Playgroud)

我担心的是,如果你试图从一个没有no-arg构造函数的类创建一个匿名类,那么代码将在编译时失败,因为没有办法将参数传递给superconstructor.这是一个有效的问题,如果是这样,有没有办法解决这个问题?

java constructor scjp inner-classes

26
推荐指数
2
解决办法
4756
查看次数

在HATEOAS体系结构中,您指定HTTP谓词?

我正在阅读有关HATEOAS文章,虽然我理解为响应中的进一步操作提供URL的想法,但我没有看到您在何处指定应使用哪些HTTP谓词与这些URL进行交互.

例如,什么是HATEOAS,为什么它对我的REST API很重要?,如何从这个回应

GET /account/12345 HTTP/1.1

HTTP/1.1 200 OK
<?xml version="1.0"?>
<account>
    <account_number>12345</account_number>
    <balance currency="usd">100.00</balance>
    <link rel="deposit" href="/account/12345/deposit" />
    <link rel="withdraw" href="/account/12345/withdraw" />
    <link rel="transfer" href="/account/12345/transfer" />
    <link rel="close" href="/account/12345/close" />
</account
Run Code Online (Sandbox Code Playgroud)

你知不知道我是否应该发出HTTP PUTPOST/account/12345/close

rest hateoas

25
推荐指数
3
解决办法
5503
查看次数

为什么显式类型转换允许向上转换私有继承?

#include<iostream>
using namespace std;

class A {
    public:
    void f(){cout<<"A"<<endl;}
};

class B : private A {
    public:
    void f(){cout<<"B"<<endl;}
};

int main (){
Run Code Online (Sandbox Code Playgroud)

由于B类私下继承A类,因此这种向上转换不应该起作用:

    A* a = new B;
Run Code Online (Sandbox Code Playgroud)

但明确的类型转换允许它.为什么?

    A* a1 = (A*)new B;
    a1->f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

25
推荐指数
3
解决办法
1463
查看次数

拦截器与春季的方面?

我试图在Spring中使用拦截器.我想在一些方法上实现一个拦截器来处理调用这些方法时的特定逻辑.我也希望与使用Web框架分开,因为我倾向于使用Spring作为后端,没有任何标头.

搜索之后,我认为Spring方法被称为Aspects,你能提一下这方面的最佳实践吗?

spring aspects interceptor

24
推荐指数
1
解决办法
3万
查看次数

为什么计算Fibonacci系列2 ^ n而不是n ^ 2的复杂性?

我试图找到使用递归树的Fibonacci系列的复杂性,并因此得出height of tree = O(n)最坏情况cost of each level = cncomplexity = n*n=n^2

怎么回事O(2^n)

algorithm recursion big-o fibonacci

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

Instagram API用于获取具有特定主题标签的图片

我希望使用PHP从Instagram获取具有特定哈希标记的所有图片.我怎样才能做到这一点?

tags api instagram

24
推荐指数
3
解决办法
10万
查看次数

如何使用CMake链接到C数学库?

如何将math库添加到我的CMake文件中?这篇文章引用了添加一个目标链接库,但我对C不太熟悉.附加帖子 - 有人可以举一个例子.文档我正在使用C,我收到了一个undefined reference to 'pow'带有数学标题的pow方法.

cmake_minimum_required(VERSION 3.3)
project(CSCI-E-28-Unix-Linux-Systems-Programming)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES
    CMakeLists.txt
    getchar.c
    main.cpp
        hw0
    more01.c)

#target_link_libraries(<math.h> m)

add_executable(main main.cpp)
add_executable(getchar getchar.c)
add_executable(more01 more01.c)
add_executable(argu print_all_arguments.c)
add_executable(chars chars.c)
add_executable(ch4 ch4.c)
Run Code Online (Sandbox Code Playgroud)

c cmake

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

在Maven中,是否可以将集成测试保存在单元测试的单独文件夹中?

Maven和Integration Testing页面上,它说:

Future Rumor认为,除了测试阶段的src/test/java之外,Maven的未来版本将在集成测试阶段支持src/it/java之类的东西.

但那是在2011-12-11.这件事发生了吗?

这个回答"不违约的src /测试/ java文件夹运行Maven测试"它提到设置<testSourceDirectory>,是他们这样做只是为了集成测试(即在某种方式integration-test相)?

我正在寻找使用Maven FailSafe插件,并避免重命名一堆集成测试或使用仍然实验性的JUnit @Categories.

integration-testing maven maven-failsafe-plugin

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