<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:atom="http://www.w3.org/2005/Atom" 
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>spock-2.1 on Solid Soft</title>
    <link>https://blog.solidsoft.pl/tags/spock-2.1/</link>
    <description>Recent content in spock-2.1 on Solid Soft</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>©{year}, All Rights Reserved</copyright>
    <lastBuildDate>Tue, 05 Apr 2022 10:00:00 +0200</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>2</sy:updateFrequency>
    
        <atom:link href="https://blog.solidsoft.pl/tags/spock-2.1/index.xml" rel="self" type="application/rss+xml" />
    
    
    

      
      <item>
        <title>More compact parameterized tests reporting in Spock 2.1</title>
        <link>https://blog.solidsoft.pl/2022/04/05/more-compact-parameterized-tests-reporting-in-spock-2.1/</link>
        <pubDate>Tue, 05 Apr 2022 10:00:00 +0200</pubDate>
        
        <atom:modified>Tue, 05 Apr 2022 10:00:00 +0200</atom:modified>
        <guid>https://blog.solidsoft.pl/2022/04/05/more-compact-parameterized-tests-reporting-in-spock-2.1/</guid>
        <description>Get even more compact reporting for parameterized tests with Spock 2.1.
  Historical background TL;TR. To just get a recipe, jump to the &amp;ldquo;More compact reporting&amp;rdquo; section. Parameterized tests, a place where Spock excels. A beautiful and powerful mechanism to reduce duplication across tests with a very readable table-like data representation (and powerful data providers if sophisticated custom logic is required).
When I started using Spock years ago (0.</description>
        <content:encoded>&lt;blockquote&gt;
&lt;p&gt;Get even more compact reporting for parameterized tests with Spock 2.1.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;figure &gt;
  
    &lt;img src=&#34;https://blog.solidsoft.pl/images/posts/2022/spock21-improved-unrolling.jpg&#34;  style=&#34;width:;height:;&#34;/&gt;
  
  
&lt;/figure&gt;

&lt;h2 id=&#34;historical-background&#34;&gt;Historical background&lt;/h2&gt;
&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34; data-dir=&#34;ltr&#34;&gt;&lt;strong&gt;TL;TR&lt;/strong&gt;. To just get a recipe, jump to the &lt;a href=&#34;#more-compact-reporting&#34;&gt;&amp;ldquo;More compact reporting&amp;rdquo; section&lt;/a&gt;.&lt;/div&gt;

&lt;p&gt;Parameterized tests, a place where Spock excels. A beautiful and powerful mechanism to reduce duplication across tests with a very readable table-like data representation (and powerful data providers if sophisticated custom logic is required).&lt;/p&gt;
&lt;p&gt;When I started using Spock years ago (0.6?), one question perpetually dinned in somebody&amp;rsquo;s ears. Why unrolling was not enabled by default? Adding &lt;code&gt;@Unroll&lt;/code&gt; (even at the test class level) was for me redundant, error prone and&amp;hellip; just boring. Due to that, I created a small &lt;a href=&#34;https://github.com/szpak/spock-global-unroll&#34; target=&#34;_blank&#34;&gt;spock-global-unroll&lt;/a&gt;
 extension which was dead simple. It was enough to just put it on a classpath (i.e. add as a dependency in Gradle or Maven) to have all the parameterized tests automatically unrolled in the whole project. Zero configuration, it just worked. You could remove all &lt;code&gt;@Unroll&lt;/code&gt; annotation (without parameters) in your project. I really liked it and used it in every project I had my fingers in. Have you ever heard about it?&lt;/p&gt;
&lt;p&gt;It was a rhetorical question. The vast majority of you did not. Why? Because it was an extension and people start looking for extensions when something does not work. For the extensions that improve (even dramatically) some aspect of your tests you would need to hear about them before (and I am hopeless at self promotion :-/).&lt;/p&gt;
&lt;p&gt;That was a reason why I &lt;a href=&#34;https://github.com/spockframework/spock/issues/967&#34; target=&#34;_blank&#34;&gt;pushed hard&lt;/a&gt;
 to have it available and enabled by default in the core of Spock 2.0. With a comprehensive implementation by &lt;a href=&#34;https://github.com/spockframework/spock/pull/1101&#34; target=&#34;_blank&#34;&gt;Björn Kautler&lt;/a&gt;
 in landed in 2.0-M3 to stay there for good. However, preparing some time ago my presentation &lt;a href=&#34;https://2022.geecon.org/speakers/info.html?id=647&#34; target=&#34;_blank&#34;&gt;&amp;ldquo;What you can expect from Spock 2?&amp;quot;&lt;/a&gt;
, I&amp;rsquo;ve noticed that it could be improved even more.&lt;/p&gt;
&lt;h2 id=&#34;default-verbose-reporting&#34;&gt;Default (verbose) reporting&lt;/h2&gt;
&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34; data-dir=&#34;ltr&#34;&gt;&lt;strong&gt;Performance tip&lt;/strong&gt;. For Gradle projects, I prefer to execute unit and integration tests directly by IDEA, not by IDEA using Gradle (which - unfortunately - has been a default option since 2019 or so). First of all, it is much faster - a crucioal thing for TDD - and in the majority of cases it works perfectly fine. The examples below use that mode. You can read how to speed up your unit tests execution in my another blog post.&lt;/div&gt;

&lt;p&gt;Let&amp;rsquo;s assume we have a simple parameterized test:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span class=&#34;kd&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;UnrollSpec&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;extends&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Specification&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;

    &lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;should calculate number of characters in given animal name&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
        &lt;span class=&#34;nl&#34;&gt;expect:&lt;/span&gt;
            &lt;span class=&#34;n&#34;&gt;animalName&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expectedLength&lt;/span&gt;
        &lt;span class=&#34;nl&#34;&gt;where:&lt;/span&gt;
            &lt;span class=&#34;n&#34;&gt;animalName&lt;/span&gt;     &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;expectedLength&lt;/span&gt;
            &lt;span class=&#34;s2&#34;&gt;&amp;#34;dog&amp;#34;&lt;/span&gt;          &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;
            &lt;span class=&#34;s2&#34;&gt;&amp;#34;wolf&amp;#34;&lt;/span&gt;         &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;
            &lt;span class=&#34;s2&#34;&gt;&amp;#34;hippopotamus&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;
    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Spock 2 unrolls parameterized tests by default displaying also all the used parameters. However, the output in IDEA is hard to read:&lt;/p&gt;


&lt;figure &gt;
  
    &lt;img src=&#34;https://blog.solidsoft.pl/images/posts/2022/spock21-long2-unroll.png&#34;  style=&#34;width:;height:;&#34;/&gt;
  
  
&lt;/figure&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
To see the parameters it is usually needed to scroll the result window horizontally (if luckily your fancy mouse supports that :-) ) or reduce space available for the test standard output.&lt;/p&gt;


&lt;figure &gt;
  
    &lt;img src=&#34;https://blog.solidsoft.pl/images/posts/2022/spock21-long-unroll.png&#34;  style=&#34;width:;height:;&#34;/&gt;
  
  
&lt;/figure&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
The crazy idea sprang in my mind - could the (repeated) feature name be omitted in the iterations name?&lt;/p&gt;
&lt;p&gt;To remove it for a particular test it is easy:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@Unroll&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;animaName: #animalName, expectedLength: #expectedLength&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;//inconvenient - just for one test
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;should calculate number of characters in given animal name&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
    &lt;span class=&#34;c1&#34;&gt;//...
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;However, we have been just celebrating the removal of &lt;code&gt;@Unroll&lt;/code&gt;, not to be forced to put it back everywhere&amp;hellip; Luckily, Spock has a global configuration mechanism, could not it be used?&lt;/p&gt;
&lt;p&gt;After some minutes when I was analyzing the &lt;code&gt;UnrollExtension&lt;/code&gt; code, it turned out that no. &lt;code&gt;SpockConfig.groovy&lt;/code&gt; allows to define a custom &lt;code&gt;defaultPattern&lt;/code&gt;, but there is no way to display just the parameters. It is a FOSS project, what should be done in that case? :-)&lt;/p&gt;
&lt;h2 id=&#34;more-compact-reporting&#34;&gt;More compact reporting&lt;/h2&gt;
&lt;p&gt;The idea described in the previous section resulted in the improvements in Spock 2.1. There is a new configuration parameter which needs to be placed inside the &lt;code&gt;unroll {}&lt;/code&gt; closure in the &lt;code&gt;SpockConfig.groovy&lt;/code&gt; file (located for example in &lt;code&gt;src/test/resources&lt;/code&gt; - NOT together with the test classes):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span class=&#34;c1&#34;&gt;//in SpockConfig.groovy
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;unroll&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;includeFeatureNameForIterations&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;figure &gt;
  
    &lt;img src=&#34;https://blog.solidsoft.pl/images/posts/2022/spock21-short2-unroll.png&#34;  style=&#34;width:;height:;&#34;/&gt;
  
  
&lt;/figure&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
Much shorter, still meaningful output. And for all tests in the project!&lt;/p&gt;
&lt;p&gt;Note. If for some reason, you want to use it just for individual features &lt;code&gt;@Unroll(&#39;#dataVariablesWithIndex&#39;)&lt;/code&gt; can be used as well. Please refer the &lt;a href=&#34;https://spockframework.org/spock/docs/2.1/data_driven_testing.html#_configuration&#34; target=&#34;_blank&#34;&gt;official documentation&lt;/a&gt;
 for other use cases.&lt;/p&gt;
&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34; data-dir=&#34;ltr&#34;&gt;Keep in mind that &lt;code&gt;SpockConfig.groovy&lt;/code&gt; can &lt;a href=&#34;https://spockframework.org/spock/docs/2.1/extensions.html#spock-configuration-file&#34;&gt;be placed in various places&lt;/a&gt;, including your home directory - to more global impact.&lt;/div&gt;

&lt;h2 id=&#34;limitations&#34;&gt;Limitations&lt;/h2&gt;
&lt;p&gt;Why that marvelous feature was not enabled by default in Spock 2.1? We were thinking about that, but there two arguments against:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Backward compatibility.&lt;/li&gt;
&lt;li&gt;Poor support in some reporting tools.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
The second point was more important. While the IDEA represents the test results with a very nice tree-like view, some other tools are not. The test report generated by Gradle or Maven&amp;rsquo;s Surefire displays them as a flat list, without the (parent) test name. As a result, not having the feature name in every iteration could be confusing.&lt;/p&gt;


&lt;figure &gt;
  
    &lt;img src=&#34;https://blog.solidsoft.pl/images/posts/2022/spock21-gradle-reporting2.png&#34;  style=&#34;width:;height:;&#34;/&gt;
  
  
&lt;/figure&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
As a result you might want to enable that feature conditionally only if executed in IDEA, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-groovy&#34; data-lang=&#34;groovy&#34;&gt;&lt;span class=&#34;c1&#34;&gt;//in SpockConfig.groovy
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;boolean&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;isExecutedFromIdea&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;getProperty&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;java.class.path&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;contains&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;idea_rt.jar&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;    &lt;span class=&#34;c1&#34;&gt;//any more reliable way?
&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;

&lt;span class=&#34;n&#34;&gt;unroll&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;includeFeatureNameForIterations&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;isExecutedFromIdea&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;That check is somehow fragile (e.g. doesn&amp;rsquo;t work if IDEA executes tests not directly, but using Gradle), but I wasn&amp;rsquo;t able to find anything better. Feel free to put your proposal in the comments.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary&lt;/h2&gt;
&lt;p&gt;I hope that you also found &lt;code&gt;includeFeatureNameForIterations false&lt;/code&gt; useful. Hopefully, having better support in the reporting tools there will be no obstacles to make it enabled by default in Spock 3.0.&lt;/p&gt;
&lt;p&gt;Btw, in the middle of May, I will be talking about that and other new and noteworthy in Spock 2 at the &lt;a href=&#34;https://2022.geecon.org/speakers/info.html?id=647&#34; target=&#34;_blank&#34;&gt;GeeCON conference&lt;/a&gt;
. This time, finally, on-site, in Kraków, Poland (but the whole conference is in English).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://2022.geecon.org/&#34; target=&#34;_blank&#34;&gt;

&lt;figure &gt;
  
    &lt;img src=&#34;https://blog.solidsoft.pl/images/posts/2022/spock21-geecon2022-big.png&#34; alt=&#34;GeeCON 2022 banner&#34; style=&#34;width:;height:;&#34;/&gt;
  
  
&lt;/figure&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;span style=&#34;opacity: 0.6&#34;&gt;Lead photo by &lt;a href=&#34;https://pixabay.com/users/paulina101-506132/&#34;&gt;Paulina101&lt;/a&gt;, published in &lt;a href=&#34;https://pixabay.com/photos/cd-cd-rom-spindle-reflection-517697/&#34;&gt;Pixabay&lt;/a&gt;, Pixabay License.&lt;/span&gt;
</content:encoded>
        <dc:creator>Marcin Zajączkowski</dc:creator>
        <media:content url="https://blog.solidsoft.pl/images/posts/2022/spock21-improved-unrolling-thumbnail.jpg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        <media:content url="https://blog.solidsoft.pl/images/posts/2022/spock21-improved-unrolling-ratio.jpg" medium="image"><media:title type="html">meta image</media:title></media:content>
        
          
            
              <category>spock</category>
            
          
            
              <category>spock2</category>
            
          
            
              <category>spock-2.1</category>
            
          
            
              <category>testing</category>
            
          
            
              <category>groovy</category>
            
          
        
        
          
            
              <category>Tools</category>
            
          
        
        
      </item>
      

    
  </channel>
</rss>