Я использую MSTest для написания тестовых случаев для моего приложения.
У меня есть метод, где файлы перемещаются из одного каталога в другой каталог. Теперь, когда я запускаю покрытие кода, это показывает, что блок catch не покрывается покрытием кода.
Это мой код, как показано ниже.
class Class1
{
public virtual bool MoveFiles( string fileName)
{
bool retVal = false;
try
{
string sourcePath = "PathSource";
string destinationPath = "DestPath";
if (Directory.Exists(sourcePath) && Directory.Exists(destinationPath))
{
string finalPath = sourcePath + "\\" + fileName ;
if (Directory.Exists(finalPath))
{
File.Move(finalPath, destinationPath);
retVal = true;
}
}
}
catch (Exception ex)
{
LogMessage("Exception Details: " + ex.Message);
retVal = false;
}
return retVal;
}
}
Метод тестирования для приведенного выше кода таков.
[TestMethod()]
public void MoveFilesTest()
{
string filename = "test";
Class1 serviceObj = new Class1();
var result = serviceObj.MoveFiles(filename);
Assert.IsTrue(result);
}
Когда я запускаю покрытие кода, оно показывает, что покрыт только блок try, а не блок catch. Поэтому для этого мне нужно написать другой метод тестирования и сгенерировать исключение, и метод тестирования будет выглядеть примерно так.
[TestMethod()]
public void MoveFilesTest_Exception()
{
string filename = "test";
Class1 serviceObj = new Class1();
ExceptionAssert.Throws<Exception>(() => serviceObj.MoveFiles(filename));
}
Может ли кто-нибудь помочь создать исключение для этого кода, поскольку я не смог этого сделать или, по крайней мере, указать мне, как это сделать?
Большое спасибо!