我试图在我的新项目中实现TDD和代码覆盖,但对于当前的我正在创建一些测试,但我对它有多个疑问。在这里,我分享了我创建的类,以便从我的文件系统中复制一个文件:
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.google.common.io.Files;
@Component
public class CopyXMLFileToResources {
@Value("${xml.routing.folder}")
private String XML_FOLDER;
@Value("${resources.folder}")
private String RESOURCES_FOLDER;
private final Logger LOG = LoggerFactory.getLogger(CopyXMLFileToResources.class);
@Scheduled(cron = "${cron.files.copy}", zone = "${zone.files.copy}")
public void copyXMLFile() throws IOException {
LOG.info("Copying the lastest varsion of Delta file ...");
File directory = validateDirectory(XML_FOLDER);
if (directory.canRead()) {
try {
File origin = Utils.prepareDeltaFile(directory);
if (origin != null) {
File copied = new File(RESOURCES_FOLDER + origin.getName());
if (copied.getTotalSpace() > 0) {
LOG.info("Last version already copied.");
}
else {
try {
Files.copy(origin, copied);
LOG.info(
"Copying the DELTA file successful");
}
catch (Exception e) {
LOG.error(e.getMessage());
}
}
}
else {
LOG.warn("No matching files fouded in {}",
directory.getCanonicalPath());
}
}
catch (ParseException e) {
LOG.error(e.getMessage());
}
}
else {
LOG.warn("Cannot read folder {}. ", XML_FOLDER);
}
}
private File validateDirectory (String folder) {
return new File(folder);
}
public String printString(String s ) {
return s;
}
}
我知道有很多事情需要改进,但我的第一个问题是,必须测试哪些功能以及如何开始?因为我创建了一个Test类,但我不知道要测试什么,我试着开始测试对该文件夹的访问,但这让我怀疑是否需要返回类似整数代码的东西,具体取决于例如0的情况文件夹访问被拒绝,例如,当一切都正常时为1。 这个类只有一个公共方法,并且是一个无效的方法。我也有关于我正在使用的属性的问题:
application.properties
:
xml.routing.folder=../../xml
resources.folder=src/main/resources/
cron.files.copy=0 1 1 * * *
zone.files.copy=Europe/Paris
这是对的吗?如果我将项目迁移到另一台服务器,则可能会拒绝访问包含xml的文件夹。我之前没有创建过测试,所以我非常感谢资源专门用于TDD。
答案 0 :(得分:0)
name方法是copyXMLFile,因此我测试实际上是否存在给定文件夹中的新文件.xml。 因此,在src / test / resources下创建一个要复制的源文件和包含该源文件的文件夹(如果使用maven文件夹结构)。测试方法验证是否存在新文件(复制结果)。 测试代码如下:
@Test
public void testCatenaCorretta_crea_civetta() {
// given
File fe = new File(pathFolder+"/copiedXmlFile.xml");
//when
sut.copyXMLFile();
//then
assertThat(fe.exists(), equalTo(true));
};`enter code here`
注意:sut代表系统未测试