PrivateObject and PrivateType are not available for a project targeting netcorapp2.0
See original GitHub issueDescription
Currently the classes located at Microsoft.VisualStudio.QualityTools.UnitTestFramework.PrivateObject
and Microsoft.VisualStudio.QualityTools.UnitTestFramework.PrivateType
are only available in the /src/TestFramework/Extension.Desktop/
project, this made sense in the past because the other project types did not support the System.Reflection
classes necessary to implement those two classes.
However, as of netcoreapp2.0 those projects projects have access to all the needed classes in System.Reflection
. A new Extension.CoreApp
project should be built, or the existing Extension.Desktop
project should be moved to the new VS15 style of projects so that <targetframeworks>netcoreapp2.0;net45</targetframeworks>
could be set.
Steps to reproduce
- Create a new test project targeting netcoreapp2.0
- Try to use the class
PrivateObject
Expected behavior
PrivateObject is found and is useable
Actual behavior
PrivateObject is not available for projects referencing the assembly that was generated from Extensions.Core
Issue Analytics
- State:
- Created 6 years ago
- Reactions:40
- Comments:22 (1 by maintainers)
Top GitHub Comments
Personally I am glad that this hasn’t been added to .NET Core / Standard. Testing of private stuff is an anti-pattern and should be avoided. However, if you absolutely cannot live without it (are doing migration of legacy stuff into .NET Core / Standard etc.), you could implement is yourself: https://gist.github.com/skalinets/1c4e5dbb4e86bd72bf491675901de5ad
We discussed this internally and decided that we don’t want to introduce this pattern back into the framework.
In the attached zip file there is a single
.cs
that can be dropped into your test project, or a shared class library and is netstandard 2.0 compatible. The source code is a copy of this implementation.PrivateObjectPrivateType.zip