<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Tag slim</title>
    <link>http://blog.objectmentor.com/articles/tag/slim</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Quick Intro To BDD Style Table Syntax</title>
      <description>&lt;p&gt;Here it is a over a year after I wrote several FitNesse tutorials. Several months back Bob added some new ways to write scenarios using a placeholder syntax and an alternative way to render script tables. What you end up with is something just a little less table-like.&lt;/p&gt;


	&lt;p&gt;This is a very quick and dirty writeup I&amp;#8217;ve been meaning to put together for nearly half a year. So while it&amp;#8217;s not pretty, it works, shows the basics and may make you aware of something you didn&amp;#8217;t know was there &amp;#8211; unless you&amp;#8217;ve been reading the release notes.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://tinyurl.com/2wfyxyb"&gt;Alternative Script Table Syntax&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Comments and requests welcome.&lt;/p&gt;


	&lt;p&gt;Brett&lt;/p&gt;</description>
      <pubDate>Tue, 21 Sep 2010 23:54:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:01018108-8559-40bc-a148-792a6ad26482</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2010/09/21/quick-intro-to-bdd-style-table-syntax</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>script</category>
      <category>Tables</category>
      <category>alternative</category>
      <category>syntax</category>
      <category>FitNesse</category>
      <category>bdd</category>
      <category>slim</category>
    </item>
    <item>
      <title>Slim table examples with fixtures in C#</title>
      <description>&lt;p&gt;There was not a lot of interest in a series of tutorials. Some, yes, but not very much. So I&amp;#8217;m not going to be spending much time right now writing FitNesse.Slim tutorials for C#.&lt;/p&gt;


	&lt;p&gt;However, I think it&amp;#8217;s a good idea to at least have some examples of each of the tables so those few that are so inclined, have something from which to start.&lt;/p&gt;


	&lt;p&gt;Have a look: &lt;a href="http://schuchert.wikispaces.com/FitNesse.Tutorials.CSharp.Slim.EachTable"&gt;C# Slim Examples&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 08 Jun 2009 23:15:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a44fd087-a7c9-45db-9de3-504bdfcd1b8c</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2009/06/08/slim-table-examples-with-fixtures-in-c</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>FitNesse</category>
      <category>slim</category>
      <category>c</category>
    </item>
    <item>
      <title>Calling C# and FitNesse Users</title>
      <description>&lt;p&gt;Are you using C# and FitNesse? Considering moving to FitNesse.Slim?&lt;/p&gt;


	&lt;p&gt;I eventually plan to port &lt;a href="http://schuchert.wikispaces.com/FitNesse.Tutorials"&gt;several FitNesse.Slim tutorials written in Java&lt;/a&gt; to C#. It&amp;#8217;s a bit of work so I want to make sure there&amp;#8217;s enough interest now (this is about&lt;i&gt; &lt;b&gt;when&lt;/i&gt;&lt;/b&gt; not if). Given that C# and Java are similar languages, I&amp;#8217;m not convinced it&amp;#8217;s really necessary right now. I&amp;#8217;m under the impression that the user base for FitNesse.Slim + C# is small, but I&amp;#8217;m often wrong. I have other things I want to get around to writing, so I&amp;#8217;m trying to get a temperature reading to know what might be useful next.&lt;/p&gt;


If this would help you or your team, what would you like to see?
	&lt;ul&gt;
	&lt;li&gt;Just the basics, all the tables and an example of each (quick to do)&lt;/li&gt;
		&lt;li&gt;Something more comprehensive, building story tests and working through to &lt;span class="caps"&gt;TDD&lt;/span&gt; to build a system from the ground up?&lt;/li&gt;
		&lt;li&gt;A full porting of the existing tutorials as is?&lt;/li&gt;
		&lt;li&gt;...&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I&amp;#8217;m really looking for some user stories from some actual candidate users. If that&amp;#8217;s you or you know someone and you like being a proxy, please respond.&lt;/p&gt;


	&lt;p&gt;Thanks!&lt;/p&gt;


	&lt;p&gt;Brett&lt;/p&gt;</description>
      <pubDate>Sat, 06 Jun 2009 00:43:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5d83d538-e622-4f71-919b-d3639a4853c5</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2009/06/06/calling-c-and-fitnesse-users</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>FitNesse</category>
      <category>slim</category>
      <category>c</category>
    </item>
    <item>
      <title>FitNesse.Slim Scenario Shenanigans </title>
      <description>&lt;p&gt;I was working with Uncle Bob today and we came across a case where we wanted to invoke a &lt;a href="http://en.wikipedia.org/wiki/Currying"&gt;curried method&lt;/a&gt;, but it was in FitNesse. It took me a while to grok it. Now I do, but it took some time.&lt;/p&gt;


	&lt;p&gt;On the surface it involves a Decision Table using a Scenario Table, which uses a Scenario Table that ultimately uses a named Fixture. It&amp;#8217;s a bit of a long read but the results do suggest a way to express a generic test and then invoke it while reducing duplicated information.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s the link: &lt;a href="http://schuchert.wikispaces.com/FitNesse.Tutorials.ScenarioTables"&gt;http://schuchert.wikispaces.com/FitNesse.Tutorials.ScenarioTables&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;This is a rough draft. I&amp;#8217;ll be updating it over the next few days. If something does not make sense, please post a comment and I&amp;#8217;ll update it.&lt;/p&gt;


	&lt;p&gt;For C# users: I have not tried this example using Slim.Net. It should work if you follow the instructions from the previous tutorial and simply replace the Java code with C# (not really a big deal when you see the code). In fact, C# offers a more flexible switch, so it would be a bit cleaner.&lt;/p&gt;</description>
      <pubDate>Mon, 16 Mar 2009 23:25:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:daa17787-8acc-4810-b055-6169044772b8</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2009/03/16/fitnesse-slim-scenario-shenanigans</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>FitNesse</category>
      <category>tutorial</category>
      <category>slim</category>
      <category>Scenario</category>
    </item>
    <item>
      <title>Getting Started with FitNesse in C#</title>
      <description>&lt;p&gt;The tutorial I mentioned yesterday now has a Java path and a C# path. Check out &lt;a href="http://schuchert.wikispaces.com/FitNesse.Tutorials.0"&gt;http://schuchert.wikispaces.com/FitNesse.Tutorials.0&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;In addition, you&amp;#8217;ll need to get Slim.net. Check out here: &lt;a href="http://schuchert.wikispaces.com/Acceptance+Testing.UsingSlimDotNetInFitNesse"&gt;http://schuchert.wikispaces.com/Acceptance+Testing.UsingSlimDotNetInFitNesse&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Fri, 13 Mar 2009 01:45:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:98ba8262-bc45-4d8c-ae11-f010b3a533a9</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2009/03/13/getting-started-with-fitnesse-in-c</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>FitNesse</category>
      <category>tutorial</category>
      <category>c</category>
      <category>slim</category>
    </item>
    <item>
      <title>FitNesse.Slim table table example and migration to a DSL</title>
      <description>&lt;p&gt;I&amp;#8217;m working on some notes related to an upcoming presentation. You can see an example of using the Slim table table here: &lt;a href="http://schuchert.wikispaces.com/Acceptance+Testing.FitNesse.TableTableExample"&gt;Table Table Example&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s a work in process. If you see something that doesn&amp;#8217;t quite make sense, please let me know.&lt;/p&gt;</description>
      <pubDate>Mon, 23 Feb 2009 06:03:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:9bc4ddbd-5d96-40ff-bc5f-ae68f567ba11</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2009/02/23/fitnesse-slim-table-table-example-and-migration-to-a-dsl</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>dsl</category>
      <category>acceptance</category>
      <category>testing</category>
      <category>FitNesse</category>
      <category>slim</category>
    </item>
    <item>
      <title>!define TEST_SYSTEM {fit:A}</title>
      <description>&lt;p&gt;Uncle Bob has been busy with &lt;a href="http://www.fitnesse.org/"&gt;FitNesse&lt;/a&gt; lately. If you have been following him on &lt;a href="http://twitter.com/unclebobmartin"&gt;Twitter&lt;/a&gt; or if you read his &lt;a href="http://blog.objectmentor.com/articles/2008/10/02/slim"&gt;blog post&lt;/a&gt; on the subject, then you are aware of his work on &lt;a href="http://blog.objectmentor.com/articles/2008/10/02/slim"&gt;Slim&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;This post, however, is not about that. It is about something he did to make it possible to execute different tests in different VM&amp;#8217;s.&lt;/p&gt;


	&lt;p&gt;By default, when you click on the &lt;b&gt;test&lt;/b&gt; or &lt;b&gt;suite&lt;/b&gt; buttons to run tests, &lt;a href="http://www.fitnesse.org/"&gt;FitNesse&lt;/a&gt; finds the tests it will run and executes them in a single VM.&lt;/p&gt;


If you want to select a particular test runner in &lt;a href="http://www.fitnesse.org/"&gt;FitNesse&lt;/a&gt;, you can add the following to a page:
&lt;div style="background-color: #eee; font-family: Monaco, "Courier New", monospaced"&gt;
!define &lt;span class="caps"&gt;TEST&lt;/span&gt;_SYSTEM {fit}
&lt;/div&gt;

Or you could add the following:
&lt;div style="background-color: #eee; font-family: Monaco, "Courier New", monospaced"&gt;
!define &lt;span class="caps"&gt;TEST&lt;/span&gt;_SYSTEM {slim}
&lt;/div&gt;

	&lt;p&gt;If you do not define this variable, then &lt;a href="http://fit.c2.com/"&gt;fit&lt;/a&gt; is the test system used to execute tests, making the first example redundant&amp;#8230;almost.&lt;/p&gt;


	&lt;p&gt;These variable definitions are inherited. &lt;a href="http://www.fitnesse.org/"&gt;FitNesse&lt;/a&gt; will search up the page hierarchy to find variable definitions. If you do not define &lt;span class="caps"&gt;TEST&lt;/span&gt;_SYSTEM anywhere in a page&amp;#8217;s hierarchy, then that test will be executed with &lt;a href="http://fit.c2.com/"&gt;fit&lt;/a&gt;. However, if any of the pages above the current page changed the runner to &lt;a href="http://blog.objectmentor.com/articles/2008/10/02/slim"&gt;slim&lt;/a&gt;, then &lt;a href="http://blog.objectmentor.com/articles/2008/10/02/slim"&gt;Slim&lt;/a&gt; will be the test runner.&lt;/p&gt;


The other thing that you can do is add a &amp;#8220;logical-vm name&amp;#8221; to the end of the runner. Here are two examples:
&lt;h3&gt;On some page&lt;/h3&gt;
&lt;div style="background-color: #eee; font-family: Monaco, "Courier New", monospaced"&gt;
!define &lt;span class="caps"&gt;TEST&lt;/span&gt;_SYSTEM {fit&lt;b&gt;:vm1&lt;/b&gt;}
&lt;/div&gt;

&lt;h3&gt;On a different page&lt;/h3&gt;
&lt;div style="background-color: #eee; font-family: Monaco, "Courier New", monospaced"&gt;
!define &lt;span class="caps"&gt;TEST&lt;/span&gt;_SYSTEM {fit&lt;b&gt;:vm2&lt;/b&gt;}
&lt;/div&gt;

	&lt;p&gt;All tests under the page containing the first define run in a vm with the logical name vm1. The same is true for vm2.&lt;/p&gt;


By default (i.e., you have not defined &lt;span class="caps"&gt;TEST&lt;/span&gt;_SYSTEM anywhere), all tests are run in the same vm. More precisely:
&lt;ul&gt;
&lt;li&gt;When you click the &lt;b&gt;test&lt;/b&gt; button, all tests executed as a result of that button click run in one VM.&lt;/li&gt;
&lt;li&gt;When you click the &lt;b&gt;suite&lt;/b&gt; button, all tests executed as a result are executed in the same VM.&lt;/li&gt;
&lt;/ul&gt;

	&lt;p&gt;As soon as you introduce the &lt;span class="caps"&gt;TEST&lt;/span&gt;_SYSTEM variable, the tests might execute in the same VM or different VM&amp;#8217;s.&lt;/p&gt;


	&lt;p&gt;Conceptually, there&amp;#8217;s a default or unnamed VM under which all tests execute. As soon as a page contains a &lt;span class="caps"&gt;TEST&lt;/span&gt;_SYSTEM with the added :VMName syntax, that page and all pages hierarchically below it run in a different VM.&lt;/p&gt;


	&lt;p&gt;If for some reason you want to have two unrelated page hierarchies execute in the same VM, you can. Define the &lt;span class="caps"&gt;TEST&lt;/span&gt;_SYSTEM variable with the same logical VM name.&lt;/p&gt;


&lt;h3&gt;Why did he add this feature&lt;/h3&gt;
I asked him to. He was working on that part of &lt;a href="http://www.fitnesse.org/"&gt;FitNesse&lt;/a&gt; so I figured he&amp;#8217;d be able to add the feature for a project I&amp;#8217;m working on. 

	&lt;p&gt;It has to do with service-level testing of a &lt;span class="caps"&gt;SOA&lt;/span&gt;-based solution. If you&amp;#8217;re interested in hearing about that and the rationale for adding this feature to &lt;a href="http://www.fitnesse.org/"&gt;FitNesse&lt;/a&gt;, let me know in the comments and I&amp;#8217;ll describe the background.&lt;/p&gt;</description>
      <pubDate>Mon, 03 Nov 2008 18:08:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4ac12665-d98e-4253-a9a4-16896fe27b41</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2008/11/03/define-test_system-fit-a</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>FitNesse</category>
      <category>test</category>
      <category>isloation</category>
      <category>slim</category>
      <category>runner</category>
    </item>
  </channel>
</rss>

