'这是输出......'
Loading C:\TEMP\BankDemo_mstest\Test_BankDemo\bin\Debug\Test_BankDemo.dll...
Starting execution...
Results Top Level Tests
------- ---------------
Error Test.BankDemo.AccountTest.CreditTest
Error Test.BankDemo.AccountTest.DebitTest
Error Test.BankDemo.AccountTest.FreezeTest
0/3 test(s) Passed, 3 Error
Summary
-------
Test Run Error.
Error 3
--------
Total 3
这是我使用的命令
OpenCover\OpenCover.Console.exe -register:user
-output:"Codecoverage.xml"
-mergebyhash
-target:"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"
targetargs:"/testcontainer:
"C:\TEMP\BankDemo_mstest\Test_BankDemo\bin\Debug\Test_BankDemo.dll"
/noisolation"
-filter:"-[Bank.*]* +[Bank*]* +[Bank.Accounts*]* -[Test.BankDemo*]*"
ReportGenerator\bin\ReportGenerator.exe Codecoverage.xml Coverage HTML
(我甚至尝试过regsvr32来注册个人资料而我正在使用XP)
实际上我是Nunit,mstest和opencoverage的初学者,我在http://www.nunit.org/index.php?p=quickStart&r=2.4找到了样本单元测试用例所以
** Nunit测试类如下**
private TestContext testContextInstance;
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}
private int store;
[TestInitialize()]
public void TestFixtureSetUp()
{
store = 1;
}
上面的类很好用Nunit和Opencoverage也显示准确的数据但是在替换mstest特定属性之后同样的类没有用,所以在发布这个questin之后我认为这个方法必须是静态的并且添加了TestContext参数。所以我做了代码更改(以粗体),如下所示,上面的命令运行正常。
MSTest类
private TestContext testContextInstance;
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}
[ClassInitialize()]
public **static** void ClassInit(**TestContext context**)
{
}
答案 0 :(得分:1)
您的测试没有失败 - 它们是错误的,这意味着编译测试项目似乎存在问题。如果无法构建和执行测试,您将无法获得保险。
答案 1 :(得分:1)
可能有2个原因,但我怀疑您的过滤器是错误的,如usage过滤器
中所述(+/-)[assembly/module filter]namespace.typefilter
和排除过滤器优先于包含过滤器
因此-[Bank.*]*
在+[Bank.Accounts*]*
(可能+[Bank*]*
)生效之前排除了类型。由于默认过滤器+[*]*
仅在您没有其他额外过滤器(默认过滤器除外)时添加,因此您只需要为要分析的模块添加过滤器,即+[Bank.*]*
如果打开XML输出,那么如果过滤掉一个类,则会通过skippedDueTo属性提供一个原因。
另一个原因可能是由于缺少PDB文件不在程序集的文件夹中(某些测试工具将程序集复制到其他文件夹 - 但我看到你正在使用/ noisolation开关 - 所以这不应该是它)< / p>
请随意讨论,或者您认为OpenCover GitHub site
上的问题有很大的提升