【发布时间】:2018-09-03 10:58:45
【问题描述】:
我用 java spring-boot 创建了一个服务器(“节点”)。有一些节点实例,因为不同之处在于每个节点的配置文件。例如:
node1.properties:
application.name=FullNode
receiving.server.addresses=tcp://localhost:8001
propagation.server.addresses=tcp://localhost:8002
recovery.server.address=http://localhost:8060
....
节点 2.properties:
application.name=FullNode
receiving.server.addresses=tcp://localhost:6001
propagation.server.addresses=tcp://localhost:6002
recovery.server.address=http://localhost:8050
...
为了测试向服务器发送数据的过程,我为 TransactionController 编写了一个 JUnit 测试。
事务控制器:
@RestController
@RequestMapping("/transaction")
public class TransactionController {
@Autowired
private TransactionService transactionService;
...
@RequestMapping(method = PUT)
public ResponseEntity<Response> addTransaction(@Valid @RequestBody
AddTransactionRequest addTransactionRequest) {
return transactionService.addNewTransaction(addTransactionRequest);
}
...
}
测试:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = AppConfig.class)
@SpringBootTest
public class DBTests {
@Autowired
private TransactionController transactionController;
@Test
public void addTransaction() {
transactionController.addTransaction(transactionRequest);
}
}
问题是,每个节点也将他的交易发送给其他节点。但是我怎么能用 JUnit 来测试呢?我不能只在测试中创建 TransactionController 的两个实例,因为 TransactionController 是一个 spring bean 单例,并且运行节点的唯一方法是使用他的配置文件。
我该怎么做?
【问题讨论】:
标签: java spring spring-boot junit