我想为以下函数创建一个测试,该函数在特定路径上创建一个文件: 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中有类似的东西吗?还是更好的方法?
1 回答
忽然笑
TA贡献1806条经验 获得超5个赞
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, "*")创建一个随机文件。
请注意,您的函数包含竞争条件。如果两个进程同时检查文件,它们都会断定该文件不存在并尝试创建文件。一个将创建文件,另一个将截断它。这是“检查然后做”。
相反,创建文件,然后检查错误。“然后检查”。
- 1 回答
- 0 关注
- 179 浏览
添加回答
举报
0/150
提交
取消