The TDNet problem is because the first type defined in the file is not a test fixture. The actual test fixture is the second type in the file. When you right-click on the file, TDNet seems to ask Gallio to run that type but not the other top-level types in the file.
Two workarounds: 1. Move OrderedCollectionImplementationFactory to the end of the file so that OrderedCollectionTest comes first. 2. Instead of using "Run Test" on the file in the Solution Explorer, right-click on or within the OrderedCollectionTest class in the code editor and use the "Run Test" context action there. Jamie: This is where it would be really handy if TDNet could pass Gallio a list of multiple assemblies, namespaces or types/members to run all at once. In the case where a file contains multiple types it would just pass the list of these types to the test runner instead of (apparently) choosing the first one only. Jeff. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Mark Kharitonov Sent: Tuesday, August 11, 2009 6:47 AM To: MbUnit.User Subject: MbUnit Re: Generic test method for dynamically generated types. The solution is here - http://groups.google.com/group/MbUnitUser/web/MbUnitEval.zip On Aug 11, 4:42 pm, Mark Kharitonov <[email protected]> wrote: > I have isolated the test in a separate assembly. It works now. What I > did before is took my original mstest unit test project, commented > some stuff, removed some references and so it did not work. > There are still a few things I fail to do: > 1. When I click "Run Test(s)" on the unit test file in the solution > explorer I get this: > ==================== > ------ Test started: Assembly: LibraryTest.dll ------ > > Gallio TestDriven.Net Runner - Version 3.0.6 build 787 > > Test Assemblies: > C:\Home\work\MbUnitEval\LibraryTest\bin\Debug\LibraryTest.dll > > Start time: 4:26 PM > Verifying assembly names. > Initializing the test runner. > Running the tests. > Disposing the test runner. > Stop time: 4:26 PM (Total execution time: 1.470 seconds) > > Test Report: > file:///C:/Documents%20and%20Settings/mark.kharitonov/Local%20Settings > /Temp/Gallio.TDNetRunner/LibraryTest.dll.html > ** NO TESTS WERE RUN (No tests found) ** The target type doesn't > contain tests from a known test framework or a 'Main' method. > ==================== > But, if I open this file in the editor, right click and select "Run > Test(s)" there I get a clean run: > ==================== > ------ Test started: Assembly: LibraryTest.dll ------ > > Gallio TestDriven.Net Runner - Version 3.0.6 build 787 > > Test Assemblies: > C:\Home\work\MbUnitEval\LibraryTest\bin\Debug\LibraryTest.dll > > Start time: 4:30 PM > Verifying assembly names. > Initializing the test runner. > Running the tests. > TestCase 'MbUnit v3.0.6.787/LibraryTest/OrderedCollectionTest`1/ > OrderedCollectionTest`1<Library.OrderedCollection<int>>/AddItemUnique' > passed. > ......................................... > ..(Deleted 26 lines here).. > ......................................... > TestCase 'MbUnit v3.0.6.787/LibraryTest/OrderedCollectionTest`1/ > OrderedCollectionTest`1<Library.OrderedObservableCollection<int>>/ > TrySetItemDuplicate' passed. > Disposing the test runner. > Stop time: 4:30 PM (Total execution time: 1.912 seconds) > > Test Report: > file:///C:/Documents%20and%20Settings/mark.kharitonov/Local%20Settings > /Temp/Gallio.TDNetRunner/LibraryTest.dll.html > > 28 passed, 0 failed, 0 skipped, took 2.39 seconds (Gallio_MbUnit). > ==================== > 2. The Debug button in the Icarus GUI just does not work. The first > time I clicked it, VS2008 drove me crazy by constantly presenting me > with source server dialogs, OKaying all the dialogs did not help - no > debug. After that, clicking the Debug button does nothing. Well, it > runs the test (I can see it in the status line), but no debugging. > 3. Running gallio.echo /debug does not debug as well. > > I guess I am doing something wrong, but what? > I will attach the solution momentarily. > > On Aug 11, 1:35 pm, "Jeff Brown" <[email protected]> wrote: > > > The TDNet error at the bottom is a red herring. It's trying to use > > its Ad-Hoc test runner because Gallio told it that it ran no tests. > > (The Ad-Hoc test runner is a kind of fallback that TDNet provides > > but it only works for limited cases.) > > > The most likely explanation is that no data has been provided to the > > test so it will not run. > > > If you send me your test code I may be able to help you further. > > > Jeff. > > > -----Original Message----- > > From: [email protected] > > [mailto:[email protected]] On > > > Behalf Of mark Kharitonov > > Sent: Tuesday, August 11, 2009 2:50 AM > > To: [email protected] > > Subject: MbUnit Re: Generic test method for dynamically generated types. > > > More Info. > > I am trying to debug from gallio.icarus with the debug button - > > nothing happens. No errors either. It just tells - 14 tests - 0 > > passed > > - 0 failed - 0 inconclusive - 0 skipped - 0.0s > > > Trying Gallio.Echo /debug just prints out this screen: > > > C:\Dev\windows\bin\Debug>gallio.echo /debug Test.dll > > > Gallio Echo - Version 3.0.6 build 787 Get the latest version > > athttp://www.gallio.org/ > > > Start time: 12:35 PM > > Verifying assembly names. > > Initializing the runtime and loading plugins. > > Initializing the test runner. > > Running the tests. > > Attaching the debugger to the host. > > Detaching the debugger from the host. > > Disposing the test runner. > > Stop time: 12:35 PM (Total execution time: 3.524 seconds) > > > 0 run, 0 passed, 0 failed, 0 inconclusive, 0 skipped > > > When I run from TDD.NET, the error message contains this: > > > ** NO TESTS WERE RUN (No tests found) ** TestCase > > 'M:Shunra.Common.Test.OrderedCollectionTest`1.AddItemUnique' > > failed: Cannot create an instance of > > Shunra.Common.Test.OrderedCollectionTest`1[T] because > > Type.ContainsGenericParameters is true. > > System.MemberAccessException: Cannot create an instance of > > Shunra.Common.Test.OrderedCollectionTest`1[T] because > > Type.ContainsGenericParameters is true. > > at > > System.Reflection.RuntimeConstructorInfo.CheckCanCreateInstance(Type > > declaringType, Boolean isVarArg) > > at > > System.Reflection.RuntimeConstructorInfo.ThrowNoInvokeException() > > at > > System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags > > invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) > > at System.Reflection.ConstructorInfo.Invoke(Object[] > > parameters) > > at > > TestDriven.AdHoc.TestRunner.AdHocTestRunner.runAdHoc(ITestListener > > testListener, ITraceListener traceListener, String assemblyPath, > > String > > cref) > > > Any ideas? > > Thanks. > > > On 8/11/09, mark Kharitonov <[email protected]> wrote: > > > Hi Jeff. > > > I am trying to apply what you have shown me, so I have written a > > > simple generic unit test type. Unfortunately, TD.NET refuses to > > > run it with the following error message: > > > Cannot create an instance of OrderedCollectionTest`1[T] because > > > Type.ContainsGenericParameters is true > > > > Is there a way to make TD.NET run generic fixtures? Or may be you > > > can advice me on how to debug a unit test without TD.NET. > > > > Thanks. > > > > On 8/11/09, Mark Kharitonov <[email protected]> wrote: > > >> Thanks a lot for the prompt replies. > > > >> On 11/08/2009, at 00:04, Jeff Brown wrote: > > > >>> Both generic test methods and generic fixture types are supported. > > > >>> I gave an example of the former below. You can use any data > > >>> source or factory you like as long as it yields the required > > >>> Types to bind to the type parameters. > > > >>> Jeff. > > > >>> From: [email protected] > > >>> [mailto:[email protected]] On Behalf Of Mark > > >>> Kharitonov > > >>> Sent: Monday, August 10, 2009 6:42 AM > > >>> To: [email protected] > > >>> Subject: MbUnit Re: Generic test method for dynamically > > >>> generated types. > > > >>> Thanks, Jeff. > > >>> Sounds promising. > > >>> I did not get from your response whether generic test methods > > >>> are possible. > > >>> If so, can the generic type parameters be yielded at run-time by > > >>> some factory method, just as with the generic fixture parameters? > > >>> Thanks. > > > >>> On 10/08/2009, at 13:18, Jeff Brown wrote: > > > >>>> Wow that's a pretty complicated case! > > > >>>> There are a few things in MbUnit v3 that might help you: > > > >>>> 1. You can specify data sources for generic fixture type > > >>>> parameters and generic test method type parameters. > > > >>>> eg. Using Column but any other data source will do, including a > > >>>> [Factory] if you like. (Just make sure the factory method > > >>>> yields Type objects.) > > > >>>> [Test] > > >>>> public void MyTest<[Column(typeof(Abc), typeof(Def))] T>() { > > >>>> ... } > > > >>>> 2. Given just how dynamic this case is, you might consider > > >>>> using a [DynamicTestFactory]. > > >>>> (http://www.gallio.org/api/html/ > > >>>> T_MbUnit_Framework_DynamicTestFactoryAttribu > > >>>> te.htm) > > > >>>> The API documentation includes an example of a dynamic test > > >>>> factory that is also data driven. So what you could do is to > > >>>> use a data driven dynamic test factory to produce a list of > > >>>> test cases for each combination of inputs. > > > >>>> Since you can run arbitrary code within the factory it should > > >>>> be pretty easy to handle the dynamically generated entity tag > > >>>> types used by the test cases. > > > >>>> Jeff. > > > >>>> -----Original Message----- > > >>>> From: [email protected] > > >>>> [mailto:[email protected]] On Behalf Of Mark > > >>>> Kharitonov > > >>>> Sent: Sunday, August 09, 2009 11:08 PM > > >>>> To: MbUnit.User > > >>>> Subject: MbUnit Generic test method for dynamically generated types. > > > >>>> Hello. > > >>>> I have a somewhat advanced question. > > > >>>> Our unit tests are currently written in mstest, however, > > >>>> one has to go extra mile to simulate combinatorial tests there. > > >>>> So, I am examining the option of migrating to MbUnit. > > >>>> In our tests, I simulate combinatorial tests using > > >>>> in-memory data provider, custom attributes on the methods and > > >>>> populate the data provider from the ClassInitialize method. All > > >>>> of these are easily done in MbUnit. > > >>>> There is, however, an additional twist to our setup - > > >>>> dynamically generated types. > > >>>> The thing is that a test method input determines the > > >>>> features of the tested dummy entity and a new dummy entity type > > >>>> may have to be produced to support these features. The new type > > >>>> is produced by generating a unique tag type corresponding to > > >>>> the feature spec. This tag type is then used as the generic > > >>>> type parameter of the DummyEntity<T> type. > > >>>> So, each cartesian multiplication product corresponds to > > >>>> some combination of features to be tested, which correspond to > > >>>> some dummy entity type, which may have to be dynamically > > >>>> generated, which instances are tested by the particular test > > >>>> method. > > > >>>> I would like to get an advice on the best way to express > > >>>> these > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
