我正在尝试为返回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)
甚至可以比较两个Function
s?您如何建议对此方法进行单元测试?
可以说我们有以下课程:
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)
如何定义我想要调用哪些方法?
看看代码:
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中,而不是集合,流或映射.
我正在尝试使用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 新手,对使用 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) 我有以下代码:
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
会很好,但是很遗憾,我的同事们不想修改此代码。因此,我需要知道提供解决方案的确切问题,因为在其他安装中它可以工作。
我已经在stackoverflow上找到了在android上以编程方式激活wifi-tethering的代码...但是如何以编程方式禁用wifi网络共享?有类似的东西setWifiApDisable
吗?
我想知道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
运营商有可能吗?