11. 测试

由于各种原因,测试 cli 应用程序很困难:spring-doc.cadn.net.cn

测试支持目前正在开发中,并将会 对各种零件不稳定。

11.1. 基础

Spring Shell 提供了许多 Utilities 和 Comments,以帮助测试您的应用程序。 测试支持由两个模块提供:spring-shell-test包含核心物品,以及spring-shell-test-autoconfigure支持测试的自动配置。spring-doc.cadn.net.cn

测试交互式命令。spring-doc.cadn.net.cn

@ShellTest
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
class InteractiveTestSample {

	@Autowired
	ShellTestClient client;

	@Test
	void test() {
		InteractiveShellSession session = client
				.interactive()
				.run();

		await().atMost(2, TimeUnit.SECONDS).untilAsserted(() -> {
			ShellAssertions.assertThat(session.screen())
				.containsText("shell");
		});

		session.write(session.writeSequence().text("help").carriageReturn().build());
		await().atMost(2, TimeUnit.SECONDS).untilAsserted(() -> {
			ShellAssertions.assertThat(session.screen())
				.containsText("AVAILABLE COMMANDS");
		});
	}
}

测试非交互式命令。spring-doc.cadn.net.cn

@ShellTest
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
class NonInteractiveTestSample {

	@Autowired
	ShellTestClient client;

	@Test
	void test() {
		NonInteractiveShellSession session = client
			.nonInterative("help", "help")
			.run();

		await().atMost(2, TimeUnit.SECONDS).untilAsserted(() -> {
			ShellAssertions.assertThat(session.screen())
				.containsText("AVAILABLE COMMANDS");
		});
	}
}

11.2. 设置

内置仿真默认使用终端宽度 80 和高度 24。 如果输出跨越多个,则更改维度非常有用 行,并且您不想在测试中处理这些情况。spring-doc.cadn.net.cn

这些可以使用 propertiesspring.shell.test.terminal-widthspring.shell.test.terminal-height.spring-doc.cadn.net.cn

@ShellTest(properties = {
	"spring.shell.test.terminal-width=120",
	"spring.shell.test.terminal-height=40"
})
class ShellSettingsSample {}

ShellTest注释包含字段terminalWidthterminalHeight也可用于更改尺寸。spring-doc.cadn.net.cn

@ShellTest(terminalWidth = 120, terminalHeight = 40)
class ShellSettingsSample {}