Fermer

janvier 20, 2022

JustMock R1 2022—Optimisation des performances, VS 2022, .NET 6


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.

Options JustMock Extension VS

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.

JustMock prend en charge C#10

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 Visual Studio 2022

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.

Prise en charge 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.

Essayez JustMock maintenant

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

Revenir vers le haut