Я хочу проверить свой код с некоторыми данными, определенными во внешнем файле.Я попробовал следующее:
namespace blub
open System
open Microsoft.VisualStudio.TestTools.UnitTesting
[<TestClass>]
type TestClass () =
[<TestMethod>]
member this.TestMethodPassing () =
let txt = System.IO.File.ReadAllText "data.txt"
Assert.IsTrue(txt.Contains "Hello");
Я только что создал проект с dotnet new mstest -lang F#
и поместил файл data.txt
рядом с файлом Test.fs
.
Однако, когда я запускаю тесты с dotnet test
, я получаю следующую ошибку:
Failed TestMethodPassing
Error Message:
Test method blub.TestClass.TestMethodPassing threw exception:
System.IO.FileNotFoundException: Could not find file '/home/peter/Desktop/blub/bin/Debug/netcoreapp2.1/data.txt'.
Stack Trace:
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.File.InternalReadAllText(String path, Encoding encoding)
at System.IO.File.ReadAllText(String path)
at blub.TestClass.TestMethodPassing() in /home/peter/Desktop/blub/Tests.fs:line 11
Конечно, я могу исправить это, изменив путь на "../../../data.txt"
,но это не похоже на стабильное решение - я не нашел никакой документации, в которой говорится, как выполнение теста влияет на текущий каталог.
Могу ли я как-то объявить свой тестовый файл как ресурс, который будет скопирован в правильную папку