J'ai une méthode de test qui prend deux fichiers XML comme entrée et les compare. J'utilise J'ai essayé le code suivant, mais cela ne donne qu'une seule sortie et s'arrête lorsque toute paire de fichiers d'entrée échoue au test. P> microsoft.visualstudio.testtools.UnittestSting code> framework on
.NET 4.5 code>. Je souhaite modifier la méthode de test de telle sorte qu'il prenne plusieurs fichiers XML (deux à la fois en paire), exécute le test et donne les résultats séparément.
string[] source = {file1, file2, file3, file4....};
string[] target = {fileA, fileB, fileC, fileD....};
[Test Method]
public void TestCase01()
{
TestLogic testObj = new TestLogic(); //class containing the comparison method
for (int i = 0; i < source.Length; i++)
{
Assert.IsTrue (testObj.VerifyFiles(source[i], target[i]));
}
}
3 Réponses :
Assembler simplement pourrait fonctionner l'instance de DataSource = tableau. Les lignes de source de données en boucle et la valeur de la ligne sous forme d'instance de tableau. P>
Pouvez-vous s'il vous plaît élaborer un peu? Peut-être donner du code de démonstration pour cela.
Vous pouvez utiliser comme datasource code> un fichier CSV qui aura des colonnes de remorquage (une pour la source et une pour la cible). Ensuite, dans votre test, utilisez-le comme suit:
[TestClass]
public class TestCase
{
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "files.csv", "files#csv", DataAccessMethod.Sequential)]
public void TestCase()
{
TestLogic testObj = new TestLogic();
string source = (string) TestContext.DataRow["source"]; // get the value from the 'source' column
string target = (string) TestContext.DataRow["target"]; // get the value from the 'target' column
Assert.IsTrue(testObj.VerifyFiles(source, target));
}
public TestContext TestContext{ get; set; }
}
Donc, avec cette méthode, je devrai lire les fichiers à partir de deux dossiers, associez-les sur la base de leurs identifiants, puis enregistrez les noms de fichiers couplés dans un fichier CSV que j'ai lu par le boîtier de test. Y a-t-il une méthode plus directe pour le faire? Comme directement transmettre une matrice à la source de données?
Dans votre question, vous n'avez rien mentionné sur Paring. Ils semblent être déjà jumelés. Juste des tableaux de cordes (je suggère les chemins), alors ma solution était de mettre ces tableaux (les chemins appariés) dans un SCV et de les lire de là. De cette façon, vous n'avez pas besoin de dupliquer le boîtier de test et d'ajouter des chemins plus jumelés sans changer le code. Si vous avez une fonctionnalité supplémentaire dans votre test, modifiez votre question.
BTW, ma réponse n'est pas limitée sur seulement 4 fichiers. Si à tout moment, vous souhaitez ajouter une nouvelle paire, vous éditez simplement le CSV et ajoutez une nouvelle ligne. C'est tout. Le cas d'essai exécutera également cette ligne
J'ai mis à jour la question avec les détails. Désolé de ne pas être assez clair.
@Schaliasos Oui, je pense que votre solution va certainement fonctionner. Je me demandais simplement s'il y a une méthode plus directe, car le projet progresse, il y aura plus de complexité supplémentaire avec différents types de fichiers pour lesquels je dois écrire différentes classes de test.
Je ne sais plus aucune autre voie. Je ne sais même pas qu'est-ce que vous voulez dire ajouter plus declasses de test code>. Si vous souhaitez tester des fonctionnalités supplémentaires, vous allez ajouter plus de cours. Je vais simplement vous suggérer de tirer la "fonctionnalité de couplage" de votre test. Créez une structure pour les fichiers (leurs chemins physiques) de manière à ce qu'ils seront déjà associés (leur nom devrait-être être «Source1» / «Target1») et utiliser les chemins de la CSV. Aucune fonctionnalité supplémentaire dans votre test. Ils ne sont que l'entrée dans votre test. Ne changez pas votre test en fonction de l'entrée, changez simplement l'entrée.
Merci pour votre entrée @schaliasos, je vais certainement considérer cela.
J'ai eu un problème similaire et à la fin de la recommandation de Cette Blog Post , P>
Nous avons utilisé un éventail de types anonymes pour stocker notre ensemble de conditions, puis utilisé la méthode de Linq () pour boucle via la matrice et exécuter le test pour chaque élément. P> blockQuote>
Cela ressemble au même que la solution originale de l'OP qu'il tente d'éviter, par ex. "Il ne donne qu'une seule sortie et arrête lorsque toute paire de fichiers d'entrée échoue le test"