Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2019-06-04T13:09:22+02:00Les derniers messages parus sur le forum de Zeste de Savoir.Tester une méthode statique privée en C# lors d'un test unitaire, message #2041982019-06-04T13:09:22+02:00obedient/@obedienthttps://zestedesavoir.com/forums/sujet/12570/tester-une-methode-statique-privee-en-c-lors-dun-test-unitaire/?page=1#p204198<p>Je le conçois, mais sinon on peut revenir sur PrivateType ?
En effet, je n’arrive pas à utiliser une classe malgrès la doc, je passe forcément à côté de quelque chose, non ?</p>Tester une méthode statique privée en C# lors d'un test unitaire, message #2041972019-06-04T11:47:08+02:00unidan/@unidanhttps://zestedesavoir.com/forums/sujet/12570/tester-une-methode-statique-privee-en-c-lors-dun-test-unitaire/?page=1#p204197<figure><blockquote>
<p>Ici c’est un deuxième sujet moins important (pour moi) que d’arriver à comprendre comment utiliser visual studio correctement.</p>
<p></p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/12570/tester-une-methode-statique-privee-en-c-lors-dun-test-unitaire/?page=1#p204195">obedient</a></figcaption></figure>
<p>L’idée c’est que si tu n’as pas de raison d’être privé, alors ton problème est réglé, et sinon j’aurai écrit le test dans le même scope que la fonction que tu veux tester.</p>
<figure><blockquote>
<p>Mais pour répondre à ta question, un test unitaire sert a déterminer si une méthode se comporte comme elle devrait. Qu elle soit publique ou privée ne me semble pas important.</p>
</blockquote><figcaption><a href="https://zestedesavoir.com/forums/sujet/12570/tester-une-methode-statique-privee-en-c-lors-dun-test-unitaire/?page=1#p204195">obedient</a></figcaption></figure>
<p>On a plutôt tendance à tester des fonctions exposées dont on fige le comportement. Tester tout ce qui est interne a plus tendance à rendre le développement difficile qu’autre chose.</p>Tester une méthode statique privée en C# lors d'un test unitaire, message #2041952019-06-04T08:15:10+02:00obedient/@obedienthttps://zestedesavoir.com/forums/sujet/12570/tester-une-methode-statique-privee-en-c-lors-dun-test-unitaire/?page=1#p204195<p>Ici c’est un deuxième sujet moins important (pour moi) que d’arriver à comprendre comment utiliser visual studio correctement.</p>
<p>Mais pour répondre à ta question, un test unitaire sert a déterminer si une méthode se comporte comme elle devrait. Qu elle soit publique ou privée ne me semble pas important.</p>Tester une méthode statique privée en C# lors d'un test unitaire, message #2041862019-06-03T18:35:43+02:00unidan/@unidanhttps://zestedesavoir.com/forums/sujet/12570/tester-une-methode-statique-privee-en-c-lors-dun-test-unitaire/?page=1#p204186<p>Hello <img src="/static/smileys/smile.png" alt=":)" class="smiley"> </p>
<p>La question importante déjà, c’est pourquoi tu veux tester une méthode privée ? </p>Tester une méthode statique privée en C# lors d'un test unitaire, message #2041772019-06-03T14:33:13+02:00obedient/@obedienthttps://zestedesavoir.com/forums/sujet/12570/tester-une-methode-statique-privee-en-c-lors-dun-test-unitaire/?page=1#p204177<p>Bonjour,</p>
<p>Je veux tester une méthode statique qui est privée.
J’ai trouvé un bout de code sur stackoverflow :</p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-csharp"><span class="hljs-keyword">using</span> Microsoft.VisualStudio.TestTools.UnitTesting;
<span class="hljs-keyword">namespace</span> <span class="hljs-title">MyLibraryTest</span>
{
[<span class="hljs-meta">TestClass</span>]
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title">MyClassTest</span>
{
[<span class="hljs-meta">TestMethod</span>]
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">TestMyMethod</span>(<span class="hljs-params"></span>)</span>
{
PrivateType privateType = <span class="hljs-keyword">new</span> PrivateType(<span class="hljs-keyword">typeof</span>(MyClass));
Type[] parameterTypes =
{
<span class="hljs-keyword">typeof</span>(<span class="hljs-keyword">int</span>),
<span class="hljs-keyword">typeof</span>(<span class="hljs-keyword">int</span>)
};
<span class="hljs-keyword">object</span>[] parameterValues =
{
<span class="hljs-number">33</span>,
<span class="hljs-number">22</span>
};
<span class="hljs-keyword">string</span> result = (<span class="hljs-keyword">string</span>)privateType.InvokeStatic(<span class="hljs-string">"MyMethodToTest"</span>, parameterTypes, parameterValues);
Assert.IsTrue(result == <span class="hljs-string">"result is 55"</span>);
}
}
}
</code></pre></div>
<p>Le problème c’est que PrivateType n’est pas reconnu.
En cherchant un peu j’ai trouvé qu’il fallait ajouter Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll, ce que j’ai fait. </p>
<figure><img src="http://merry-goblin.planethoster.world/learntowalk/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll.png" alt="Image utilisateur"><figcaption>Image utilisateur</figcaption></figure>
<p>Selon le lien ci-dessous: </p>
<p><a href="https://docs.microsoft.com/fr-fr/dotnet/api/microsoft.visualstudio.testtools.unittesting.privatetype?view=mstest-net-1.2.0">Documentation PrivateType</a></p>
<p>Mais visiblement ça ne change rien au problème.</p>
<p>Je ne suis pas un développeur C# expérimenté, je passe peut-être à côté de quelque chose de tout con …</p>
<p>Cdt,</p>Lancer des tests unitaires avec un TestRunner perso, message #713072015-08-31T14:30:07+02:00artragis/@artragishttps://zestedesavoir.com/forums/sujet/3946/lancer-des-tests-unitaires-avec-un-testrunner-perso/?page=1#p71307<p>Salut,</p>
<p>je suis en train de mettre au point une interface entre le framework unittest de python et l'outil de gestion de tests TestLink.</p>
<p>J'ai donc écrit un ensemble de classes qui permettent de jouer le rôle d'adapter. Vient le moment de vérifier que tout cela fonctionne.</p>
<p>J'utilise donc ce code :</p>
<figure><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18</pre></div></td><td class="code"><div class="codehilite"><pre><span class="kn">from</span> <span class="nn">unittest</span> <span class="kn">import</span> <span class="n">main</span>
<span class="kn">from</span> <span class="nn">wrapper</span> <span class="kn">import</span> <span class="n">TestLinkRunner</span>
<span class="n">TEST_MODULE</span> <span class="o">=</span> <span class="s">"tests"</span>
<span class="n">TESTLINK_API_KEY</span> <span class="o">=</span> <span class="s">""</span>
<span class="n">TESTLINK_SERVER</span> <span class="o">=</span> <span class="s">"http://127.0.0.1/testlink/lib/api/xmlrpc/v1/xmlrpc.php"</span>
<span class="n">TESTLINK_PROJECT_ID</span> <span class="o">=</span> <span class="mi">1</span>
<span class="n">TESTLINK_PLATFORM_NAME</span> <span class="o">=</span> <span class="s">"TEST"</span>
<span class="n">MUST_CREATE_BUILD</span> <span class="o">=</span> <span class="bp">True</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">from</span> <span class="nn">config</span> <span class="kn">import</span> <span class="o">*</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s">"Warning we are using default parameters"</span><span class="p">)</span>
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s">"test"</span><span class="p">)</span>
<span class="c">#__import__(TEST_MODULE) # juste un test que j'ai fait pour voir si c'était ça qui buggait</span>
<span class="n">main</span><span class="p">(</span><span class="n">module</span><span class="o">=</span><span class="n">TEST_MODULE</span><span class="p">,</span> <span class="n">testRunner</span><span class="o">=</span><span class="n">TestLinkRunner</span><span class="p">(</span><span class="n">TESTLINK_SERVER</span><span class="p">,</span> <span class="n">TESTLINK_PROJECT_ID</span><span class="p">,</span> <span class="n">TESTLINK_PLATFORM_NAME</span><span class="p">,</span> <span class="n">MUST_CREATE_BUILD</span><span class="p">,</span> <span class="n">TESTLINK_API_KEY</span><span class="p">))</span>
</pre></div>
</td></tr></table>
<figcaption><p>le fichier lauchtestlinktests.py</p></figcaption></figure><p>A partir de là je veux exécuter les tests qui sont dans <code>./tests/test*.py</code>.</p>
<p>Je lance donc <code>python lauchtestlinktests.py</code>. Et j'obtiens </p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16</pre></div></td><td class="code"><div class="codehilite"><pre>Traceback <span class="o">(</span>most recent call last<span class="o">)</span>:
File <span class="s2">"lauchtestlinktests.py"</span>, line 18, in <module>
main<span class="o">(</span><span class="nv">module</span><span class="o">=</span>TEST_MODULE, <span class="nv">testRunner</span><span class="o">=</span>TestLinkRunner<span class="o">(</span>TESTLINK_SERVER, TESTLINK_PROJECT_ID, TESTLINK_PLATFORM_NAME, MUST_CREATE_BUILD, TESTLINK_API_KEY<span class="o">))</span>
File <span class="s2">"/usr/lib/python3.4/unittest/main.py"</span>, line 92, in __init__
self.parseArgs<span class="o">(</span>argv<span class="o">)</span>
File <span class="s2">"/usr/lib/python3.4/unittest/main.py"</span>, line 139, in parseArgs
self.createTests<span class="o">()</span>
File <span class="s2">"/usr/lib/python3.4/unittest/main.py"</span>, line 146, in createTests
self.module<span class="o">)</span>
File <span class="s2">"/usr/lib/python3.4/unittest/loader.py"</span>, line 146, in loadTestsFromNames
<span class="nv">suites</span> <span class="o">=</span> <span class="o">[</span>self.loadTestsFromName<span class="o">(</span>name, module<span class="o">)</span> <span class="k">for</span> name in names<span class="o">]</span>
File <span class="s2">"/usr/lib/python3.4/unittest/loader.py"</span>, line 146, in <listcomp>
<span class="nv">suites</span> <span class="o">=</span> <span class="o">[</span>self.loadTestsFromName<span class="o">(</span>name, module<span class="o">)</span> <span class="k">for</span> name in names<span class="o">]</span>
File <span class="s2">"/usr/lib/python3.4/unittest/loader.py"</span>, line 114, in loadTestsFromName
parent, <span class="nv">obj</span> <span class="o">=</span> obj, getattr<span class="o">(</span>obj, part<span class="o">)</span>
AttributeError: <span class="s1">'module'</span> object has no attribute <span class="s1">'tests'</span>
</pre></div>
</td></tr></table>
<p>j'ai essayé en lançant <code>python lauchtestlinktests.py tests</code>, <code>python lauchtestlinktests.py tests.test_my_file.py</code> mais j'ai toujours ce genre d'erreur.</p>