测试使用 os.Create() 创建的文件

我想为以下函数创建一个测试,该函数在特定路径上创建一个文件:


    exists, err := IsFileExists(path)

    if err != nil {

        return err

    }

    if exists {

        return errors.New("File already exists")

    }

    file, err := os.Create(path)

    defer file.Close()

    return err

我知道在 JUnit 中有TemporaryFolder 规则可以帮助您设置测试所需的文件和目录结构,如下所示:


public class DummyFileClassTest {

    @Rule

    public TemporaryFolder folder = new TemporaryFolder();


    @Test

    public void someMethod() {

        // given

        final File file1 = folder.newFile("myfile1.txt");

        final File file2 = folder.newFile("myfile2.txt");


        ... etc...

    }

}

Go中有类似的东西吗?还是更好的方法?


泛舟湖上清波郎朗
浏览 186回答 1
1回答

忽然笑

testing 提供 TempDir来获取一个测试目录,每次测试后都会清理该目录。import(  "testing"  "path")func TestConvert(t *testing.T) {    tmpdir := t.TempDir()     ...    // tmpdir will be cleaned up}然后,您可以path.Join(tmpdir, "test.file")在临时目录中创建一个具有特定名称的文件,或者ioutil.TempFile(tmpdir, "*")创建一个随机文件。请注意,您的函数包含竞争条件。如果两个进程同时检查文件,它们都会断定该文件不存在并尝试创建文件。一个将创建文件,另一个将截断它。这是“检查然后做”。相反,创建文件,然后检查错误。“然后检查”。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go