Ok, this is exactly what I need to do, but not sure on how to
implement this.

eg:

public class Fixture
{

   [Factory("CreatePersons")]
   public Fixture(Person p)
   {
      // how do I add the steps to the fixture
      // how do I pass the Person p parameter to Test1 and Test2
   }

   public IEnumerable<Person> CreatePersons()
   {
       yield return new Person("Mike");
       yield return new Person("Jim");
   }

   [Test]
   public void Test1(Person p)
   {
        // do something with p
   }

   [Test]
   public void Test2(Person p)
   {
        // do something with p
   }

}

Thanx

On Jan 22, 8:27 pm, Jeff Brown <[email protected]> wrote:
> If you put the factory on the constructor then the tests will appear as if
> the fixture was parameterized.
>
> Like this:
>
> Fixture({Mike})
>  - Test1
>  - Test2
> Fixture({Jim})
>  - Test1
>  - Test2
>
> The presentation above with {Mike} and {Jim} assumes that Person has an
> overridden ToString that returns the name of the Person.  If ToString hasn't
> been overridden then you will probably see (at least in the current trunk
> versions) a description of the properties that make up the person.
>
> eg. Fixture({Person: Name="Jim"})
>
> On Thu, Jan 22, 2009 at 10:24 AM, max2256 <[email protected]> wrote:
>
> >  Hi,
>
> >    Sorry if you have to repeat yourself, but what would happen if you
> > put
> >    the factory attribute on the constructor???
>
> >    Would the ouptut on the runner (Icarus) look like this?
>
> >    -Person("Mike")
> >      -- Test1
> >      -- Test2
> >    -Person("Jim")
> >      -- Test1
> >      -- Test2
>
> > Thanx
>
> > On Jan 21, 3:50 pm, Jeff Brown <[email protected]> wrote:
> > > There are several options here.  Here are two of them:
>
> > > 1. Put the row or factory attribute on the constructor.
>
> > > 2. Put the attributes instead on one or more writable properties or
> > fields of the class.
>
> > > (Fields, properties, constructor parameters and generic type parameters
> > can also be bound positionally or by name using a data source  attribute on
> > the class level.  This is useful if you want to use multiple columns of
> > values from the same source.)
>
> > > However it is not possible to parameterize setup.  I think you'll find
> > the alternatives more than compensate.
>
> > > Jeff.
>
> > > -----Original Message-----
> > > From: "[email protected]" <[email protected]>
> > > Date: Wednesday, Jan 21, 2009 12:28 pm
> > > Subject: MbUnit Re: mixture of TestSuite and DataDriven testing
> > > To: "MbUnit.User" <[email protected]>Reply-To:
> > [email protected]
>
> > > Hi,
>
> > > Suppose I want to do a similar thing AAA style. Namely, I have several
> > > persons created by the CreatePersons method, and for each person, I
> > > want to run the Setup method (with a Person argument) and several
> > > tests. So, the questions are:
> > > - Can we run a parametrized [Setup] the same way as [Test]?
> > > - Can we have it class-wide, i.e., put [Factory("CreatePersons")] at
> > > the class level?
>
> > > Same question regarding the Row-style testing: can I apply the Row
> > > attribute at the class level, and have all my Setup and Test methods
> > > parametrized the same way, parameters taken from the class level
> > > attribute?
>
> > > Thanks
>
> > > ulu
>
> > > On Jan 21, 12:46 am, Jeff Brown <[email protected]> wrote:
> > > > It looks like you're trying to produce a list of Person objects to pass
> > to
> > > > the tests.
> > > > Try this:
>
> > > > public class TestFixture
> > > > {
> > > >    public IEnumerable<Person> CreatePersons()
> > > >    {
> > > >        yield return new Person("Mike");
> > > >        yield return new Person("Jim");
> > > >    }
>
> > > >    [Test]
> > > >    [Factory("CreatePersons")]
> > > >    public void Test1(Person p)
> > > >    {
> > > >         Assert.AreEqual("Max", p.Name);
> > > >    }
>
> > > >    [Test]
> > > >    [Factory("CreatePersons")]
> > > >    public void Test2(Person p)
> > > >    {
> > > >         Assert.AreEqual("Max", p.Name);
> > > >    }
>
> > > > }
>
> > > > Here the output will look like:
>
> > > > - Test1({Mike})
> > > > - Test1({Jim})
> > > > - Test2({Mike})
> > > > - Test2({Jim})
>
> > > > It should also be possible to combine data sources with suites like
> > this.  I
> > > > haven't tried it yet...
>
> > > > [DynamicTestFactory]
> > > > [Factory("CreatePersons")]
> > > > public IEnumerable<Test> Suite(Person p)
> > > > {
> > > >     yield return new TestCase("Test1", () => {
> > > >        // do something with p.
> > > >     });
>
> > > > }
>
> > > > Jeff.
>
> > > > On Tue, Jan 20, 2009 at 12:52 PM, max2256 <[email protected]> wrote:
>
> > > > > Hi,
>
> > > > > I'm new to MbUnit. I would like to know if there is a way of doing
> > the
> > > > > following with MbUnit V3 or any MbUnit version. (mixture of TestSuite
> > > > > and DataDriven testing) :
>
> > > > > [TestFixture]
> > > > > public class TestFixture
> > > > >  {
> > > > >     [Row(typeof(Person), new Person("Max"))]
> > > > >     [Row(typeof(Person), new Person("Mike"))]
> > > > >     [Row(typeof(Person), new Person("Frank"))]
> > > > >     [TestSuite]
> > > > >     public TestSuite GetSuite(Person p)
> > > > >     {
> > > > >          // add tests to TestSuite
> > > > >     }- Hide quoted text -
>
> > > - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MbUnit.User" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/MbUnitUser?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to