在java中测试文件副本

时间:2018-03-14 15:22:01

标签: java unit-testing spring-boot tdd

我试图在我的新项目中实现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。

1 个答案:

答案 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代表系统未测试