<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>JUnit 5 on 首页 | Widegram</title>
    <link>https://widegram.com/categories/junit-5/</link>
    <description>Recent content in JUnit 5 on 首页 | Widegram</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Thu, 13 Jan 2022 21:10:00 +0000</lastBuildDate><atom:link href="https://widegram.com/categories/junit-5/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>JUnit 5</title>
      <link>https://widegram.com/2022/01/junit-5/</link>
      <pubDate>Thu, 13 Jan 2022 21:10:00 +0000</pubDate>
      
      <guid>https://widegram.com/2022/01/junit-5/</guid>
      <description>JUnit 5 测试
&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.junit.jupiter&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;junit-jupiter&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;5.8.0&amp;lt;/version&amp;gt; &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt; &amp;lt;/dependency&amp;gt; import org.junit.jupiter.api.*; public class MyTest { @BeforeAll static void init(){ System.out.println(&amp;#34;init&amp;#34;); } @BeforeEach public void before(){ System.out.println(&amp;#34;before&amp;#34;); } @AfterEach public void after(){ System.out.println(&amp;#34;after&amp;#34;); } @Test public void testAdd(){ Assertions.assertEquals(2,2); System.out.println(&amp;#34;123&amp;#34;); } @Test public void testAdd2(){ Assertions.assertEquals(2,2); System.out.println(&amp;#34;456&amp;#34;); } } 输出结果：
init before 123 after before 456 after SpringBoot测试 @SpringBootTest会创建Spring boot上下文
@Autowired、@SpyBean和@MockBean，可以替换原来的Bean
例如，在测试写数据库时，我们一般不直接写数据库，而是模拟该函数的运行。
@SpringBootTest public class MyTest{ @SpyBean	//类似Autowired自动注入，但是是模拟的 Svc svc1; @Test void t1(){ when(svc1.</description>
      <content:encoded><![CDATA[<h2 id="junit-5">JUnit 5</h2>
<p>测试</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#f92672">&lt;dependency&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;groupId&gt;</span>org.junit.jupiter<span style="color:#f92672">&lt;/groupId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;artifactId&gt;</span>junit-jupiter<span style="color:#f92672">&lt;/artifactId&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;version&gt;</span>5.8.0<span style="color:#f92672">&lt;/version&gt;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;scope&gt;</span>test<span style="color:#f92672">&lt;/scope&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/dependency&gt;</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#f92672">import</span> org.junit.jupiter.api.*;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">MyTest</span> {
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@BeforeAll</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">init</span>(){
</span></span><span style="display:flex;"><span>        System.<span style="color:#a6e22e">out</span>.<span style="color:#a6e22e">println</span>(<span style="color:#e6db74">&#34;init&#34;</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@BeforeEach</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">before</span>(){
</span></span><span style="display:flex;"><span>        System.<span style="color:#a6e22e">out</span>.<span style="color:#a6e22e">println</span>(<span style="color:#e6db74">&#34;before&#34;</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@AfterEach</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">after</span>(){
</span></span><span style="display:flex;"><span>        System.<span style="color:#a6e22e">out</span>.<span style="color:#a6e22e">println</span>(<span style="color:#e6db74">&#34;after&#34;</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@Test</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">testAdd</span>(){
</span></span><span style="display:flex;"><span>        Assertions.<span style="color:#a6e22e">assertEquals</span>(2,2);
</span></span><span style="display:flex;"><span>        System.<span style="color:#a6e22e">out</span>.<span style="color:#a6e22e">println</span>(<span style="color:#e6db74">&#34;123&#34;</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@Test</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">testAdd2</span>(){
</span></span><span style="display:flex;"><span>        Assertions.<span style="color:#a6e22e">assertEquals</span>(2,2);
</span></span><span style="display:flex;"><span>        System.<span style="color:#a6e22e">out</span>.<span style="color:#a6e22e">println</span>(<span style="color:#e6db74">&#34;456&#34;</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>输出结果：</p>
<pre tabindex="0"><code>init
before
123
after
before
456
after
</code></pre><h3 id="springboot测试">SpringBoot测试</h3>
<ul>
<li>
<p><code>@SpringBootTest</code>会创建Spring boot上下文</p>
</li>
<li>
<p><code>@Autowired</code>、<code>@SpyBean</code>和<code>@MockBean</code>，可以替换原来的Bean</p>
<ul>
<li>
<p>例如，在测试写数据库时，我们一般不直接写数据库，而是模拟该函数的运行。</p>
</li>
<li>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#a6e22e">@SpringBootTest</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">MyTest</span>{
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@SpyBean</span>	<span style="color:#75715e">//类似Autowired自动注入，但是是模拟的</span>
</span></span><span style="display:flex;"><span>    Svc svc1;
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@Test</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">t1</span>(){
</span></span><span style="display:flex;"><span>        when(svc1.<span style="color:#a6e22e">add</span>(1,1)).<span style="color:#a6e22e">thenReturn</span>(3);<span style="color:#75715e">//模拟运行，并直接返回3</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> res <span style="color:#f92672">=</span> svc1.<span style="color:#a6e22e">add</span>(1,1);
</span></span><span style="display:flex;"><span>        Assertions.<span style="color:#a6e22e">assertEquals</span>(res,3);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div></li>
<li>
<p><code>@MockBean</code>默认模拟所有函数，<code>@SpyBean</code>只模拟使用<code>when</code>函数显式定义的函数。</p>
</li>
</ul>
</li>
</ul>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
