【问题标题】:How do I capture program output in Tosca?如何在 Tosca 中捕获程序输出?
【发布时间】:2016-10-18 17:12:02
【问题描述】:

我们想测试由 Tosca 启动的命令行程序的输出。

例如,我们期待

java -jar myprogram.jar

将以下输出流式传输到 System.out:

2016-10-12 09:00:00 INFO [thread-name] MYPROGRAM started
2016-10-12 09:00:01 INFO [thread-name] MYPROGRAM initialisation successful
2016-10-12 09:00:02 INFO [thread-name] MYPROGRAM completed successfully

Tosca 如何获取这些信息?它可以附加到程序的输出流吗?或者我们应该将信息推送到文件中并让 Tosca 查看该文件?如果是这样,我们如何重定向输出?

【问题讨论】:

    标签: tosca


    【解决方案1】:

    这里有两个选择:


    无需与应用程序交互

    如果您不需要与 java 应用程序交互(因为它刚刚启动,执行它的操作并再次关闭;例如,一个小工具或类似的东西)您可以直接使用 Tosca 模块启动应用程序 TBox启动程序,等待它退出并将输出流式传输到文件。以下是您的测试步骤的样子:


    与需要的应用程序交互

    如果您确实需要与应用程序交互(例如,因为它是正在测试的应用程序并且您想在其上运行自动化测试步骤),您显然不能等待它退出。在这种情况下,您可以创建一个包含以下内容的 start.bat 文件:

    javaw -jar "C:\path\to\yourjar.jar" > "C:\temp\log.txt"
    

    那么你也可以很方便地使用TBox Start Program模块来启动批处理文件,并在文件中捕获标准输出。


    希望这会有所帮助!

    【讨论】:

    • 虽然这不允许我们在程序发出时捕获来自程序标准输出的信息,但 WaitForExit/StandardOutputFile 确实允许我们查看最终生成的信息。所以我认为我们将采用第一个解决方案,因为看起来 Tosca 不允许我们做我们想做的事。非常感谢。
    • 可能还有第三种选择:使用控制台引擎。但是,老实说,在您的情况下,我认为这不是最稳定的解决方案。不过,如果您有兴趣,这里有详细信息:Console Engine Docu
    • 我们确实从一开始就考虑了这一点,但我们正在检查记录器产生的大量数据,所以它根本不是固定位置的东西。在运行结束时获取日志文件就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2013-01-10
    • 2023-04-07
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    相关资源
    最近更新 更多