小编Lor*_*ore的帖子

Java 8:对返回Function对象的方法进行单元测试

我正在尝试为返回a的方法编写Java 8单元测试Function; 就像是:

class MyObject<X> {
     public Function<X,Obj> getFunction() {...}
 }
Run Code Online (Sandbox Code Playgroud)

在我的单元测试中,我创建了一个示例对象并调用,getFunction()并希望将其与预期的函数进行比较,该函数不起作用org.junit.Assert.assertEquals:

@Test
public void getFunction_returnsFunction() {
   final MyObject<St> object = new MyObject<>(..);
   final Function<St,Obj> expectedResult = ...;

   // this does not work
   assertEquals(expectedResult, object.getFunction());
}
Run Code Online (Sandbox Code Playgroud)

甚至可以比较两个Functions?您如何建议对此方法进行单元测试?

java lambda unit-testing java-8

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

Java 8方法参考:如何确定采用哪种方法?

可以说我们有以下课程:

public class NameCreator {

    public String createName(String lastname) {
        return lastname;
    }

    public String createName(String lastname, String firstName) {
        return lastname + " " + firstname
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

如果我想通过Java 8方法引用它:

NameCreator::createName
Run Code Online (Sandbox Code Playgroud)

我会得到错误:

Cannot resolve method createName
Run Code Online (Sandbox Code Playgroud)

如何定义我想要调用哪些方法?

java java-8

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

如何收集/减少java 8流到pojo?

看看代码:

Collection<MyDto> col = ...

MyBuilder builder = new MyBuilder(); 
for (MyDto dto: col) {
    switch (dto.getType()) {
        case FIELD1:
            builder.field1(dto.getValue());
            break:
        case FIELD2:
            builder.field2(dto.getValue());
            break:
    }    
}

Some result = builder.build();
Run Code Online (Sandbox Code Playgroud)

有没有办法用流来做到这一点,比如:

Some result = col.stream().collect(...)
Run Code Online (Sandbox Code Playgroud)

请注意,所有流值都收集到sigle pojo中,而不是集合,流或映射.

java reduce collect java-8 java-stream

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

带有Spring的嵌入式MongoDB无法正常工作

我正在尝试使用WebFlux和嵌入式MongoDB创建Spring应用程序。但是,即使我的测试运行完美,我也无法启动我的应用程序,因为嵌入式mongodb似乎尚未启动。

我得到的异常是以下内容:

com.mongodb.MongoSocketOpenException: Exception opening socket
    at com.mongodb.connection.SocketStream.open(SocketStream.java:62) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:126) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:114) ~[mongodb-driver-core-3.6.3.jar:na]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_144]
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_144]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_144]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_144]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_144]
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_144]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_144]
    at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_144]
    at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:59) ~[mongodb-driver-core-3.6.3.jar:na]
    at com.mongodb.connection.SocketStream.open(SocketStream.java:57) ~[mongodb-driver-core-3.6.3.jar:na]
    ... 3 common frames omitted

2018-03-25 17:47:15.372  INFO 14188 --- [localhost:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server localhost:27017

com.mongodb.MongoSocketOpenException: Exception opening …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-webflux

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

测试接口还是类?

我是 Java 新手,对使用 JUnit 和 Mockito 测试代码感到困惑。

我在 github 上分叉了一个项目,其中的任务是编写 Junit 测试, AccountService它是一个接口。我不知道的是我必须测试什么?接口或实现接口的类?

这是AccountService

public interface AccountService {
    public Operation deposit(String accountNumber, int amount);
    public Operation withdraw(String accountNumber, int amount);
    public OperationsDto history(String accountNumber);
}
Run Code Online (Sandbox Code Playgroud)

这是AccountService实现

@Service
public class AccountServiceImpl implements  AccountService {

    @Autowired
    private AccountRepository accountRepository;
    @Autowired
    private OperationRepository operationRepository;

    @Autowired
    OperationConverter operationConverter;


    public Operation deposit(String accountNumber, int amount) {
        checkAmount (amount);

        AccountEntity account = getAccount (accountNumber);

        int balance =  account.getBalance();
        balance = balance …
Run Code Online (Sandbox Code Playgroud)

java tdd junit mockito

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

我需要澄清“缺少要转义的字符”异常

我有以下代码:

public class Test {

public static void main(String[] args) {
    String path = "${file.path}/fld/";
    String realValue = "C:\\path\\smtg\\";
    String variable = "${file.path}";
    path = path.replaceAll("\\$\\{" + variable.substring(2, variable.length() - 1) + "\\}", realValue);
    System.out.println(path);
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下例外:

Exception in thread "main" java.lang.IllegalArgumentException: character to be escaped is missing
at java.util.regex.Matcher.appendReplacement(Matcher.java:809)
at java.util.regex.Matcher.replaceAll(Matcher.java:955)
at java.lang.String.replaceAll(String.java:2223)
at testCode.Test.main(Test.java:9)
Run Code Online (Sandbox Code Playgroud)

我已经找到了有关此问题的一些问题,但仍然不了解此错误。有人可以解释我发生了什么吗?

我知道这样做replace会很好,但是很遗憾,我的同事们不想修改此代码。因此,我需要知道提供解决方案的确切问题,因为在其他安装中它可以工作。

java string

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

在Android上禁用wifi网络共享

我已经在stackoverflow上找到了在android上以编程方式激活wifi-tethering的代码...但是如何以编程方式禁用wifi网络共享?有类似的东西setWifiApDisable吗?

android tethering

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

用变量实例化

我想知道Java实例化的一些事情.让我们举一个例子,我想根据这样的条件实例化一个类:

Animal a = null;
if (string.equals("Dog")) a = new Dog();
else if (string.equals("Cat") a = new Cat();
etc...
Run Code Online (Sandbox Code Playgroud)

我知道它有效,但我想做这样的事情:而不是做a = new Dog();
我想做这样的事情:( a = new string();string== "Dog")

基本上在运行时,字符串被"Dog"替换.我知道可以使用API​​ Reflection(with Class.forName(string)).

但是new运营商有可能吗?

java oop reflection

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