J'ai un ensemble de tests Specflow que j'exécute et j'essaie d'écrire les résultats jusqu'à présent dans un fichier après la fin de chaque scénario, puis je réécrivez à la fin de l'ensemble du test. Si j'exécute les tests en mode débogage, alors ce code est frappé après chaque scénario, mais le fichier n'apparaît dans l'Explorateur Windows qu'après la fin de tous les tests (ou je force les tests à s'arrêter). Le code ci-dessous, qui écrit dans le fichier, se trouve dans un projet distinct du projet de test Specflow.Le fichier C# n'est pas écrit tant que l'application n'est pas terminée
Au départ, je ne chasse et eu ce à la place de StreamWriter:
using (var file = new FileInfo(filePath).AppendText())
Mais qui ne fonctionnait pas, donc après avoir examiné des divers exemples sur Internet j'ai ajouté Flush supplémentaire, Fermer, puis processus. Début, changé en StreamWriter et aucun d'eux n'a aidé. Le code actuel qui ne fonctionne toujours pas est:
private string rootFolderPath = Directory.GetParent(@"..\..\..\..") [email protected]"\";
public void WriteAllTestScenarioNames(List<ScenarioResult> results, string fileName, string directoryName)
{
results.Sort();
Directory.CreateDirectory(rootFolderPath + directoryName);
string filePath = rootFolderPath + directoryName + @"\" + fileName;
using (var file = new System.IO.StreamWriter(filePath))
{
file.WriteLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString());
foreach (var scenarioResult in results)
{
file.WriteLine(scenarioResult.ToString());
}
file.Flush();//flush the file to ensure that it's written now
file.Close();//flush the file to ensure that it's written now
}
Process.Start(filePath); //flush the file to ensure that it's written now
}
Dans l'exemple que je suis en train il n'y a que trois lignes dans le fichier de sortie quand il se termine enfin et les créés, modifiés et accédés dates dans les propriétés du fichier dans Windows Explorer sont identiques.
J'utilise Windows 7 Enterprise SP1 64 bits avec .NET Framework 4.5.2
peut-être, j'ai oublié de mentionner, la classe qui fait l'écriture de fichier est dans un projet/assemblage différent au projet de test Specflow. – Steve