下面是我需要将JSON文件转换为Excel文件的代码。从另一个方法加载JSON需要一些时间,所以我需要等待文件出现。
public class converter2_ES {
@Test
public void main() throws Exception {
LocalDateTime date = LocalDateTime.now();
DateTimeFormatter dateformat = DateTimeFormatter.ofPattern("dd-MM-yyyy HH-mm-ss");
String formatedate =date.format(dateformat);
Workbook workbook = new Workbook(".//json_files//elastic_search.json");
//workbook.save(".//output-"+formatedate+".xlsx");
workbook.save(".//Excel_files//es_files//ES-"+formatedate+".xlsx");
System.out.println("Elastic_searchjson file converted successfully");
}
}
3条答案
按热度按时间gjmwrych1#
问题
在我的测试中,文件
.//json_files//elastic_search.json
实际上是由另一个测试编写的,我如何确保这个测试在将文件写入磁盘的测试之后运行?这个问题必须从评论中摘录出来。
答案
答案是,这取决于...
一般来说,测试之间不应该有时间耦合,这意味着
test2()
不应该依赖于test1()
的结果或行为。有很多方法可以解决这个问题,可以通过在两个不同的类中进行测试来解决,每个类都有自己的特定
setup()
方法和@BeforeEach
注解。另一个解决方案是确保测试以正确的顺序运行,根据您使用的测试框架,有多种方法可以通过
@Test
注解添加顺序。6mzjoqzu2#
你应该做一个异步实现,也就是说,你应该等到上一个任务完成后再继续下一个任务,你可以参考这个简单的教程ANDROID - HTTP REQUEST USING ASYNCTASK TUTORIAL IN JAVA
下面是您可以参考的代码示例:
euoag5mw3#
如果要等待其他程序创建文件:
WatchService
的示例。但是,请注意,您会得到一个事件来指示文件已经创建,但不会得到一个事件来指示文件创建(即写入)已经完成。因此,根据save()
方法的工作方式,您可能需要检查修改时间戳的文件大小,以查看它们何时停止更改。从我对javadocs的阅读来看,
WatchService
也应该报告当前程序创建的文件的文件事件,但是可能有更好的方法,例如,如果你想等待另一个线程创建一个文件:Thread.join()
等待执行创建的线程完成。ExecutorService
而不是裸线程,请保留submit
任务时返回的Future
对象,并使用它来检测任务何时完成。如果您在一些测试代码中这样做,
WatchService
可能有些过头了,一个简单的轮询循环(带sleep)测试目标文件是否已经创建可能就足够了。如果你的代码是Swing或JavaFX应用程序的一部分,这些就不合适了。它们有自己的方式来执行一个长时间运行的任务,并在任务完成时采取行动。(如果你只是在UI事件循环中等待任务,你会阻塞事件循环。
Android将再次不同...