10
votes

Y a-t-il des bons forfaits de test unitaires pour Excel?

Y a-t-il de bons cadres pouvant aider le code de test d'unité dans Excel?


1 commentaires

Qu'essayez-vous de tester et de quelle langue utilisez-vous?


7 Réponses :


3
votes

Il y a quelques expériences sur Internet: Eunit < / a> et vbaunit . Aucun de ces projets ne semble avoir des communautés actives, il est donc peu probable qu'il soit aussi robuste que (dire) Junit ou Nunit. Mais ils peuvent être assez bons pour vos besoins.


1 commentaires

C'est de bonnes choses .... Je convaincue mon ami d'actuaire d'essayer de jouer avec Eunit



5
votes

Je suppose que vous voulez que vous souhaitez tester le code VBA dans des modules.
Premièrement, même s'il y avait un bon cadre de test unitaire disponible pour VBA, je soupçonne que les tests seraient très complexes, en raison des dépendances du classeur lui-même. Si votre code interagit avec le classeur et ses objets sera un cauchemar total, car vous ne pouvez pas vraiment vous moquer de cela: Imaginez un module qui lit les données dans une feuille et crée un graphique dans une autre ... Essence , un classeur Excel fusionne votre persistance, votre domaine et votre présentation tout en un - pas bon pour les tests.
L'autre cas est le code qui est principalement axé sur le calcul. Si ce code devient assez complexe pour que cela soit testé, une chose que vous pourriez envisager est de déplacer votre code à l'extérieur de la VBA, pour le rendre testable. Je travaille souvent avec des clients qui ont de grands modèles financiers, avec une VBA lourde, et quand je peux, j'aime extraire le code VBA en C # et en faire un complément VSTO. La prestation est que je peux tester le code et travailler dans Visual Studio, au lieu de l'IDE VBA.


0 commentaires

3
votes

J'utilise débog.assert . J'organise les tests dans les modules. Dans chaque module, je gère un sous-roulant qui appelle toutes les méthodes de test dans ce module.

Pour exécuter tous les tests du projet, j'ai un module AllTestS avec un RUNALL qui appelle Rowallall dans tous les modules de test.

simple et fonctionne très bien sans aucune tranche.

Article MSDN sur VBA Debug.assert


0 commentaires

1
votes

J'ai écrit un article de blog sur la manière dont vous pouvez utiliser facilement les infrastructures d'unité de Python pour écrire des tests d'unité pour VBA, mais également la logique cellulaire en général: https://www.zooméranalytics.com/blog/unittestS-for-Microsoft-excel

Essence, vous pouvez tester la fonction VBA suivante: P>

import unittest
import xlwings as xw

class TestMyBook(unittest.TestCase):
    def setUp(self):
        # setUp will be called before the execution of each unit test
        self.wb = xw.Book('mybook.xlsm')  # map workbook
        self.mysum = self.wb.macro('Module1.mysum')  # map function

    def test_mysum(self):
        result = self.mysum(1, 2)  # get result from VBA
        self.assertAlmostEqual(3, result)  # test if result corresponds to the expected value

if __name__ == '__main__':
    # This allows us to easily run the tests from the command prompt
    unittest.main()


0 commentaires

1
votes

Je suis surpris de ne pas trouver RubberDuck parmi les autres suggestions. C'est une addin com pour le VBE (pour tous les hôtes MS Office: Excel, Word, PowerPoint, Access), Open-Source et Active Development. Ses principales caractéristiques sont des tests unitaires et des inspections de code.

Une brève description, prise de la page Wiki ci-dessus:

Pourquoi RubberDuck?

Parce que nous voulons un projet d'animal de compagnie, et celui-ci est amusant et difficile. L'idée est de faire tout ce que nous pouvons faire de la programmation dans VBA et refactoring le code VBA Legacy, aussi agréable que dans la journée moderne versions de Visual Studio. Le VBE a eu sa confiance de la VB6 aussi longtemps que Je me souviens que RubberDuck le prend ... ailleurs.

Tout a commencé sur l'examen du code, avec un message sur le test de l'unité dans VBA. Il a grandi dans une solution de travail 100% VBA, puis nous voulions avoir Cette fonctionnalité de test d'unité intégrée à l'IDE - le complément COM La solution a commencé avec elle.

avoir accès à l'ensemble du modèle d'objet Vbe dans un complément COM qui peut Ajouter des menus personnalisés, des barres d'outils et des fenêtres dotées de Windows, nous voulions analyser et inspecter le code et corriger les problèmes - ou au moins les signaler.

alors nous venons de penser que nous faisons tout ce que nous voulons mettre en œuvre pour étendre le VBE. Nous avons ajouté des moyens de naviguer plus facilement le code, une liste des articles TODO, puis nous avions des idées comme intégrer le contrôle de la source, mettre en œuvre des refacteurs, en utilisant l'API d'échange de pile pour créer et postez votre code VBA comme une question de revue de code.

Je l'utilise depuis environ une demi-année maintenant (principalement sous Excel 2010), et cela a été assez stable et serviable. Ainsi, je le recommanderais.


0 commentaires


0
votes

the Le projet Flyingkoala peut vous aider avec les formules Excel testant une unité.

[Flyingkoala] fournit prolongé Fonctionnalité à XLWINGS .

Voici un exemple pour les formules de test d'unité (et réseaux de formules ) de "à l'intérieur" Excel (comme trouvé dans la bibliothèque de Flyingkoala); xxx

et voici un exemple de "extérieur" Excel (comme trouvé dans la bibliothèque Flyingkoala); xxx


0 commentaires