小编Sam*_*irl的帖子

如何优雅地停止bash脚本中的无限循环?

我需要在每X秒运行的应用程序,因此,尽可能的cron不秒,这样的工作,我写了一个bash脚本具有X秒睡在它无限循环.

当我必须手动停止运行脚本时,我想以正确的方式执行它 - 让应用程序完成运行,并且不要再次进入循环.

你有什么想法,如何实现这一目标?我想过传递参数,但我找不到如何将参数传递给运行脚本.

bash shell infinite-loop

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

Spring Boot和Flyway:在集成测试之前清除数据库数据

我正在使用Spring Boot Framework(v2.0.2)构建REST服务,其中在数据库上运行集成测试。我在Google上搜索了很多,并且有大量关于测试前清理数据库的文章,但是不幸的是,我发现它们要么效率低下,要么是黑客入侵,而不是Spring引导。您能不能忍受我,并提出解决此问题的好方法?

理想情况下,我认为数据库不应该在每次测试之前清除,而应该在它们的某些组(例如套件或每个测试类)之前清除。找到的建议之一如下所示:

@Autowired
protected Flyway flyway;

@Before
public void init() {
    flyway.clean();
    flyway.migrate();
}
Run Code Online (Sandbox Code Playgroud)

每次测试之前都会重建数据库,显然效率不高。将其更改为静态上下文并使用@BeforeClass不起作用,因为Spring不会注入静态字段。

有什么好的方法可以从静态上下文中获取该flyway bean,以使该解决方案有效?

这里的子问题: Flyway具有清除命令,该命令不仅清除数据,而且删除所有内容,然后migration命令再次执行迁移。这似乎也很麻烦。由于无论如何都要在启动时检查迁移情况,因此我认为没有必要在每个测试组之前拆除并重建所有内容。仅清除数据就足够了。您是否可以提出一些建议?

综上所述,我正在寻找一种标准的方法来删除每组集成测试(例如,每个类)之前的数据库数据(如果可能的话,不删除表)。我想每个人在使用Spring Boot时都会面临这个任务,因此框架本身可能考虑了一些不错的解决方案。

谢谢!

java junit flyway spring-boot

4
推荐指数
2
解决办法
3338
查看次数

标签 统计

bash ×1

flyway ×1

infinite-loop ×1

java ×1

junit ×1

shell ×1

spring-boot ×1