Question

Quelles sont les meilleures conventions pour nommer les assemblys de test dans .NET (ou tout autre langage ou plate-forme)?

Ce qui me divise principalement entre ces options (veuillez en indiquer d'autres!):

  • Company.Website - le projet
  • Company.Website.Tests

ou

  • Société.Site Web
  • Company.WebsiteTests

Le problème avec la première solution est qu’il ressemble à. Les tests sont un sous-espace de noms du site, alors qu’ils sont vraiment plus parallèles dans mon esprit. Que se passe-t-il lorsqu'un nouveau sous-espace de noms entre en jeu, comme Company.Website.Controls , où dois-je placer les tests pour cet espace de noms, par exemple?

Cela devrait peut-être même être: Tests.Company.Website et Tests.Company.Website.Controls , etc.

.

Était-ce utile?

La solution

Je vais aller avec

* Company.Website - the project
* Company.Website.Tests

La raison et la réponse sont simples, les tests et le projet sont liés dans le code; par conséquent, ils doivent partager un espace de noms.

Si vous souhaitez partager le code et tester dans une solution, vous avez tout de même cette option. par exemple. vous pouvez mettre en place une solution avec

Dossier de code

  • Company.Website

-Test du dossier

  • Company.Website.Tests

Autres conseils

J'irais personnellement avec

Company.Tests.Website

De cette façon, vous avez un espace de noms de tests commun et des projets à l’intérieur de celui-ci, suivant la même structure que le projet réel.

J'ai en fait une autre racine parallèle.

Tests.Company.Website

Cela fonctionne bien pour lever les ambiguïtés lorsque vous avez de nouveaux espaces de noms.

Je suis un grand fan de la structuration de l'espace de noms de test comme ceci:

Company.Tests.Website.xxx

Company.Tests.Website.Controls

Comme vous, je considère les tests comme une structure d’espace de nommage parallèle au code principal, ce qui vous permet de le savoir. Cela présente également l’avantage que, puisque l’espace de nom commence toujours par le nom de votre société, vous ne devriez pas avoir de conflit de noms avec des bibliothèques tierces

Je préfère aussi " Tests " en préfixant le nom réel de l'assemblage de sorte qu'il soit facile de voir tous mes assemblages de test d'unité classés alphabétiquement ensemble lorsque je les sélectionne en masse pour les placer dans NUNit ou dans le harnais de test que vous utilisez.

Donc, si site Web était le nom de ma solution (et de ses assemblages), je suggère:

Tests.Website.dll pour accompagner l'assembly de code réel Website.Dll

Nous suivons une approche intégrée:

Company.Namespace.Test
Company.Namespace.Data.Test

De cette manière, les tests sont proches du code en cours de test, sans avoir à basculer entre les projets ou à rechercher des références pour garantir qu’un test couvre une méthode particulière. Nous n'avons pas non plus besoin de maintenir deux hiérarchies distinctes mais identiques.

Nous pouvons également tester différentes parties du code à mesure que nous améliorons et développons.

Cela semble un peu bizarre au début, mais à long terme, cela a très bien fonctionné pour nous.

Je nomme généralement les projets de test Projets-Tests par souci de brièveté dans l'Explorateur de solutions, et j'utilise Société.Namespace.Tests pour les espaces de noms.

Je préfère aller avec:

Company.Website.Tests

Peu importe les sous-espaces de noms tels que Company.Website.Controls, tous les tests ont lieu dans le même espace de noms: Company.Website.Tests. Vous ne voulez pas que vos espaces de noms de test DOIVENT être en parallèle avec le reste de votre code, car le refactoring prend deux fois plus de temps.

Je préfère Company.Website.Spec et ai généralement un projet de test par solution

Alors que MVC commençait à devenir une réalité dans le monde du développement Web .net, je commençais à penser à cela. Rappelez-vous que M, V et C sont des composants distincts, donc:

  • Company.Namespace.Website
  • Company.Namespace.Website.Core
  • Company.Namspance.Website.Core.Tests
  • Company.Namespace.Website.Model
  • Company.Namespace.Website.Model.Tests

site Web est votre vue légère. Core contient les contrôleurs, les aides, les interfaces de vue, etc. Core.Tests sont vos tests pour ledit Core. Le modèle est pour votre modèle de données. La chose intéressante ici est que vos tests de modèle peuvent automatiser les tests spécifiques à votre base de données.

Cela peut paraître exagéré pour certaines personnes, mais j'estime que cela me permet de séparer les préoccupations assez facilement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top