Telerik JustMock R1 2022 apporte une excellente optimisation des performances, la possibilité de désactiver des fonctionnalités, la prise en charge de C# 10 et la prise en charge des versions officielles de VS 2022 et .NET 6.
Hé, les développeurs ! C'est le moment de la sortie de R1 2022 pour notre cadre de simulation, Telerik JustMockqui inclut une optimisation significative des performances, la possibilité de désactiver les fonctionnalités qui affectent les performances, la prise en charge de C# 10, ainsi que la prise en charge des versions officielles de Visual Studio 2022 et . NET 6. Voyons les détails.
Optimisation des performances (bêta)
Ceux d'entre vous qui suivent les versions de JustMock savent déjà que, l'année dernière, nous avons publié de nombreuses optimisations autour du profileur JustMock. Avec R1 2022, nous avons permis au profileur de travailler à la demande. Qu'est-ce que ça veut dire? Pour expliquer, je vais commencer par le fonctionnement de JustMock auparavant. Comme vous le savez, JustMock est capable de se moquer de tout. Cette capacité est obtenue en utilisant un profileur qui insère le code requis dans tout le code compilé. Ce processus est connu sous le nom d'instrumentation. L'optimisation permet désormais au profileur d'ignorer cette étape et d'instrumenter le code à la demande lorsque vous utilisez l'API JustMock.
L'optimisation est assez importante et varie en fonction de votre scénario exact. Nos mesures montrent que dans les pires scénarios, le gain de performance est d'environ 40 % et dans le meilleur des cas, d'environ 90 %. Vous vous demandez probablement quel est le pire scénario. Un tel scénario se produit lorsque presque tout le code dont vous disposez est simulé dans certains des tests unitaires. Dans le meilleur des cas, c'est le contraire, lorsque presque aucun code n'est moqué.
Comme le changement dans le fonctionnement de JustMock est important, nous publions cette optimisation en version bêta.
Vous vous demandez probablement comment vous pouvez tirer parti de JustMock. tout ça. Eh bien, c'est facile. Ouvrez simplement l'extension JustMock Visual Studio, accédez à Options et activez l'option "On Demand Instrumentation Enabled". Telerik -> JustMock.
Parce que toutes les méthodes ne seront pas instrumentées à chaque fois, deux changements fonctionnels de rupture surviennent.
Le premier est lié à la moquerie du nouvel opérateur . Avec l'instrumentation normale, il est possible qu'une instance déjà existante d'une classe particulière soit renvoyée lors de la création d'une nouvelle instance de cette classe. Voici un exemple :
NUM
Dépendez-vous
{
// ARRANGE - Chaque nouvelle instanciation de la classe Foo doit renvoyer une instance prédéfinie.
var testObj =
new
Foo();
[14=
"Test"
;
Mock.Arrange(() =>
new
Foo()).Returns(testObj);
// ACT
var myNewInstance =
new
Foo();
// ASSERT
[296590] ]
Assert.AreEqual(
"Test"
myNewInstance.MyProp);
}3 ]Avec l'optimisation à la demande activée, se moquer du nouvel opérateur ne fonctionne pas dans tous les cas. Pour cette raison, vous devez utiliser
IgnoreInstance
dans ces cas. Voici un exemple de la façon de retravailler l'exemple précédent :
NUM
DU CANUSUSEIGNOREINSTANCE ()
{
// ARRANGE - Chaque nouvelle instanciation de la classe Foo devrait avoir une propriété avec une valeur prédéfinie.
var testObj =
new
Foo();
Mock.Arrange(() => testObj.MyProp).IgnoreInstance().Returns(
"Test "
);
// ACT
var maNouvelleInstance =
nouveau
; ASSERT
}
Le deuxième changement fonctionnel avec rupture est lié à l'utilisation des actions, en particulier lors de la définition d'une valeur de propriété avec la méthode ArrangeSet(Action). Voici un exemple :
NOI
bar_onsetto1_shouldnotifier ()
{
// Arranger
// // Création d'une instance simulée de l'interface "IFoo".
var foo = Mock.Create();
bool
isSetTo1 =
false
;
// Organisation : lorsque foo.Bar est défini sur 1, il doit changer "isSetTo1" en vrai.
Mock.ArrangeSet(() => { foo.Bar = 1; }).DoInstead(() => isSetTo1 =
true
);
// Agir
Foo.bar = 1; // ASSERT
]
Assert.IsTrue(isSetTo1);
}
La raison de ce changement de rupture est qu'une action ne peut pas fournir des informations sur le type de propriétaire dans tous les scénarios, et JustMock ne sait pas quel type il doit instrumenter. Ces informations peuvent être fournies à l'aide de la surcharge ArrangeSet(Action)
. Voici un exemple de retravail de l'exemple précédent :
NOI
bar_onsetto1_shouldnotifier ()
{
// Arranger
// // Création d'une instance simulée de l'interface "IFoo".
var foo = Mock.Create();
bool
isSetTo1 =
false
;
// Organisation : Indiquez le propriétaire du type de la propriété Bar .DoInstead(() => isSetTo1 =
true
);
// Act
foo. Barre = 1 ;
// Assert
Assert.IsTrue(isSetTo1);
[296] }
Nous espérons que la plupart d'entre vous adapteront la nouvelle approche à la demande, et après que la plupart d'entre vous l'auront fait, nous définirons ce comportement comme comportement par défaut pour Telerik JustMock. Essayez-le et revenez-nous avec vos résultats et vos commentaires. remarqué qu'il existe des options supplémentaires dans les options d'exécution du profileur. Ces options vous permettent de désactiver les fonctionnalités qui ont un impact sur les performances. Je vais vous expliquer chacun d'eux.
Nettoyage automatique du référentiel de maquettes activé
Il existe de nombreuses situations où une maquette ne peut pas être associée à un objet. Un exemple est une simulation d'une méthode statique. Comme le mock n'est pas associé à un objet, il ne peut pas être libéré lorsqu'un objet est collecté par le ramasse-miettes. Pour cette raison, le profileur JustMock insère un appel à la méthode Mock.Reset à la fin de chaque test unitaire. La surveillance si une méthode de test est compilée par le CLR entraîne un ralentissement du temps d'exécution.
Avec cette option, vous pouvez désactiver cette instrumentation, ce qui entraînera une amélioration des performances. N'oubliez pas que cela peut entraîner des fuites de mémoire si vous n'ajoutez pas d'appel à Mock.Reset dans chaque méthode de test unitaire qui utilise JustMock. Utilisez-le avec prudence.
Instrumentation de la méthode DLLImport activée
Le nom parle de lui-même. Cette option contrôle si les méthodes marquées avec l'attribut DLLImport peuvent être simulées. Cette fonctionnalité peut être désactivée en toute sécurité si aucune simulation de ces méthodes n'est attendue.
Résolution de contexte de test asynchrone activée
Cette option contrôle l'exécution des méthodes de test asynchrones et si les tests asynchrones doivent être instrumentés. Cette fonctionnalité peut être désactivée en toute sécurité si seules des méthodes de test synchrones sont exécutées.
Prise en charge de C# 10
Je suis heureux d'annoncer que nous avons testé toutes les nouvelles fonctionnalités fournies avec C# 10 et que nous pouvons désormais demander une assistance.
Prise en charge de la version officielle de Visual Studio 2022
Suite aux dernières versions technologiques, nous avons introduit la prise en charge dans JustMock pour la version officielle de Visual Studio 2022.[19659005]
Prise en charge de la version officielle de .NET 6
Suite au développement de .NET, nous avons introduit la prise en charge dans JustMock de la version officielle de .NET 6.
Obtenez la nouvelle version maintenant
La version R1 2022 est déjà disponible en téléchargement dans les comptes clients. Si vous êtes nouveau sur Telerik JustMock, vous pouvez en savoir plus via la page produit. Il est livré avec un essai gratuit de 30 jours vous donnant le temps d'explorer les capacités de JustMock.
Inscrivez-vous au webinaire et rejoignez-nous sur Twitch
Pour voir la nouvelle version en action, veuillez nous rejoindre sur le webinaire Telerik R1 2021le jeudi 3 février 2022, à 11h00 HE lorsque nos défenseurs des développeurs plongeront dans vos fonctionnalités de productivité Telerik préférées. le vendredi 28 janvier 2022 à 10h00 HE.
Faites-nous part de vos réflexions
N'hésitez pas à nous laisser un commentaire ci-dessous pour partager vos réflexions. Ou visitez notre portail de commentaires et faites-nous savoir si vous avez des suggestions ou si vous avez besoin de fonctionnalités particulières.
Vous pouvez également consulter notre page historique des versions pour obtenir une liste complète des les améliorations incluses.
Source link