Tests BDD en C # avec specFlow. Prendre des inputs depuis Excel Application et WinForms

J'utilise une application construite sur C # que j'utilise dans le cadre de Visual Studio 2012. Il lance une feuille de calcul Excel, permet aux inputs d'users dans les cellules excel (et également les formulaires Win / boîtes de dialog, etc, requestnt l'input), puis effectuent des calculs en fonction de l'input et produisent des résultats.

J'essaie d'utiliser SpecFlow pour automatiser un tel scénario de test. Est-ce que quelqu'un connait un tutoriel, etc. qui pourrait me guider? Est-ce que cela a un sens de ce que j'essaie d'atteindre? Peut-on se faire à travers le concombre d'une manière ou d'un autre conseil? J'ai seulement fait des tests simples en C # avec SpecFlow jusqu'à présent qui n'entraîne pas l'apparition d'Excel et la request d'inputs d'users.

D'avance, merci pour votre aide.

SpecFlow n'est qu'un cadre de test, il ne vous donne pas d'options pour interacting avec excel ou WinForms. Donc, la réponse sera Non, avec seulement SpecFlow seul, vous ne pouvez pas y parvenir.

Vous aurez besoin d'une API tierce qui peut script excel ou WinForms, quelque chose de similaire à Selenium pour les browsers Web. Peut-être AutoIt ?

Comme Liviu M. l'a déclaré dans sa réponse, SpecFlow ne facilitera plus l'automation de l'excellent, il vous permettra de définir vos besoins pour l'application en fonction du comportement que vous attendez de votre application plutôt que par un test d'unité.

Specflow fournit un cadre pour définir des tests en termes de conditions préalables définies, d'actions et de comportements attendus qu'il exécute en convertissant en tests unitaires qui sont gérés par un cadre de test unitaire.

Afin d'automatiser Excel, vous pouvez utiliser la bibliothèque Excel interop et vous pouvez ensuite écrire des scénarios comme

 Scenario: Data is processed correctly Given excel is started with workbook 'c:\workbook.xls' When the users enters 'blah' into cell 'A1' Then cell 'B3' should contain text 'BlahBlah' 

vous pouvez alors commencer à excel dans la définition d'étape donnée:

 [Give("excel is started with workbook '(.*)'")] public void StartExcel(ssortingng workbook) { using Excel = Microsoft.Office.Interop.Excel; Excel.Application excel = new Excel.Application(); excel.Visible = true; Excel.Workbook excelWorkbook = excel.Workbooks.Open(workbook); } 

plus d'informations ici

votre étape pourrait alors être comme suit:

 [When("the users enters '(.*)' into cell '(.*)'")] public void WhenTheUsersEntersIntoCell(ssortingng textValue, ssortingng cell) { Worksheet worksheet = (Excel.Worksheet)excelWorkbook.Sheets[sheetName]; worksheet[cell] = textValue; } 

C'est un pseudo code et je ne suis pas certain que cette ligne fonctionnera: worksheet[cell] = textValue; mais il devrait vous donner une idée de la façon dont vous pouvez le faire, et vous devriez pouvoir google le rest.