Unfortunately displaying the data in Icarus is not possible since it would
have to evaluate the factory.  Moreover the factory could return different
data during test exploration vs. at runtime.

There is a bit of infrastructure in there that could potentially support
elective enumeration of test argument values but it needs to be fleshed out
before Icarus can use it.

I hope this does not inconvenience you too much.

Jeff.

On Fri, Jan 23, 2009 at 10:49 AM, max2256 <[email protected]> wrote:

>
> Yes, if I use a static factory it works!
>
> This implementation works perfectly for report generation but when I
> load the assembly with a runner, eg Icarus,
> this is what I get in the Test Explorer :
>
>  Fixture
>      - Test1
>      - Test2
>
> Do you think that its possible the get the following in the Test
> Explorer without any custom attributes?
>
> Fixture({Mike})
>     - Test1
>     - Test2
> Fixture({Jim})
>     - Test1
>     - Test2
>
> Thanx
>
> On Jan 23, 1:24 pm, Jeff Brown <[email protected]> wrote:
> > Yes the latter using a static factory method.
> >
> > Is it not working?
> >
> > Jeff.
> >
> > On Fri, Jan 23, 2009 at 9:26 AM, max2256 <[email protected]> wrote:
> >
> > > Sorry again, is this what you mean?
> >
> > > public class Fixture
> > > {
> > >   private  Person person;
> >
> > >   public Fixture( [Factory("CreatePersons")] Person p)
> > >   {
> > >      person = p;
> > >   }
> >
> > >   public static IEnumerable<Person> CreatePersons()
> > >    {
> > >       yield return new Person("Mike");
> > >       yield return new Person("Jim");
> > >   }
> >
> > >   [Test]
> > >    public void Test1()
> > >   {
> > >        // do something with person
> > >   }
> >
> > >   [Test]
> > >   public void Test2()
> > >   {
> > >        // do something with person
> > >    }
> >
> > > }
> >
> > > On Jan 23, 11:42 am, max2256 <[email protected]> wrote:
> > > > 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