Question

Veuillez excuser le titre ambigu; C'est difficile à décrire en une seule ligne.

En grosu003Cgallio> tâche de Nant.

L'échec concerne les tests qui tentent de lire des fichiers; Ils lisent des fichiers par rapport au répertoire actuel, par exemple ".. .. files dir what". Cependant, le problème semble être que Gallio copie les DLL de test dans un répertoire ailleurs et définit le répertoire actuel comme "% homedir% appdata local temp gallio mstestadapter randomname testdir out quelque chose".

Donc, ma question est double: où dois-je mettre des fichiers requis par les tests afin qu'ils puissent être trouvés au moment de l'exécution, et comment dois-je les référer à partir du code?

(De plus, je ne pensais pas du tout que nous utilisions MS-Test, alors comment se fait-il qu'il y ait un répertoire «mstest» là-dedans?)

Était-ce utile?

La solution

Bien que nous utilisions Nunit au lieu de MBUnit, je pense qu'il y a des conseils généraux que je peux donner concernant la gestion des fichiers dans les tests unitaires.

Ne comptez jamais sur des chemins - ni absolus ni relatifs. Gardez le contrôle des chemins à l'intérieur de vos tests. Ceci est ce que nous faisons:

  1. Ajouter un dossier nommé Resources à votre projet de test (vous avez donc tout au même endroit)
  2. Mettez les fichiers requis là-dedans (par exemple MyFile.txt)
  3. Ajoutez les fichiers à votre projet via Add > Existing Item... (Donc, vos fichiers sont conservés avec vos sources. Ils sont déployés par la suite dans le cadre de l'assemblage de votre projet de test)
  4. Ajoutez les fichiers aux ressources de votre projet de test (onglet Resources Dans les propriétés du projet, Add Resource > Add Existing File...)
  5. Utilisez le fichier dans votre luminaire de test:
    1. Définissez un champ de chemin de fichier dans votre classe de luminaire (utilisez Path.GetTempFileName() Puisque vous avez alors un chemin unique et il est très probable que vous ayez des droits d'accès suffisants sur n'importe quelle machine)
    2. Créer un fichier local à l'aide du chemin du fichier pendant la configuration du test
    3. Utilisez le fichier dans votre test
    4. Supprimer le fichier créé pendant la démolition

Voici un échantillon:

[TestFixture]
public class MyFixture
{
  private static readonly string MyFilePath = Path.GetTempFileName();

  [SetUp]
  public void SetUp()
  {
    // use File.WriteAllBytes for binary files
    File.WriteAllText(MyFilePath, Properties.Resources.MyFile);
  }

  [Test]
  public void TestSomething()
  {
    Assert.That(ObjectUnderTest.UseFile(MyFilePath), Is.True);
  }

  [TearDown]
  public void TearDown()
  {
    File.Delete(MyFilePath);
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top