c# - Creation of a new instance of generic type parameter not getting code coverage -
i've run code through code coverage , line below shows 1 block not covered.
can tell me part of line isn't executing?
an example play with:
public abstract class base { public abstract iexample createentity<texample>() texample : iexample, new(); } public class class1 : base { public override iexample createentity<texample>() { iexample temp = new texample(); return temp; } } public interface iexample { } public class tex : iexample { }
and test method
[testmethod] public void testmethod1() { class1 ex = new class1(); ex.createentity<tex>(); }
change constraint force texample
class:
public abstract iexample createentity<texample>() texample : class, iexample, new();
if run compiled code through tool ilspy, see block not getting coverage:
texample temp = (default(texample) == null) ? activator.createinstance<texample>() : default(texample); return temp;
it performing check see if type passed generic reference type or value type. forcing class, check removed. read more on default keyword here: http://msdn.microsoft.com/en-us/library/xwth0h0d.aspx
another way complete code coverage use struct implements iexample
:
public struct s1 : iexample { }
and add test:
[testmethod] public void structtest() { class1 ex = new class1(); ex.createentity<s1>(); }
Comments
Post a Comment