13

Click here to load reader

How totestinternalprotectmethodsinc#

Embed Size (px)

Citation preview

Page 1: How totestinternalprotectmethodsinc#

How to test internal / protected methods in c#

Howard 2014/02/13

Page 2: How totestinternalprotectmethodsinc#

Modifiers

• internal

• The internal keyword is an access modifier for types and type members. Internal types or members are accessible only within files in the same assembly

• protected

• The protected keyword is a member access modifier. A protected member is accessible within its class and by derived class instances. 

Page 3: How totestinternalprotectmethodsinc#

How?

Page 4: How totestinternalprotectmethodsinc#

How to test internal methods?

Page 5: How totestinternalprotectmethodsinc#

How to test internal methods?

• InternalsVisibleToAttribute

• Specifies that types that are ordinarily visible only within the current assembly are visible to a specified assembly.

• Namespace:  System.Runtime.CompilerServices

Page 6: How totestinternalprotectmethodsinc#

How to test internal methods?

Page 7: How totestinternalprotectmethodsinc#

How to test internal methods?

Page 8: How totestinternalprotectmethodsinc#

How to test protected methods?

Page 9: How totestinternalprotectmethodsinc#

How to test protected methods?• 繼承 TestClass 後• 覆寫要測試的方法並將其 modifier 設為 public

• 測試 public method

Page 10: How totestinternalprotectmethodsinc#

How to test protected methods?

Page 11: How totestinternalprotectmethodsinc#

new Modifier

• When used as a declaration modifier, the new keyword explicitly hides a member that is inherited from a base class.

• When you hide an inherited member, the derived version of the member replaces the base class version.

• Although you can hide members without using the new modifier, you get a compiler warning. If you use new to explicitly hide a member, it suppresses this warning.

Page 12: How totestinternalprotectmethodsinc#

How to test protected methods? – better solution!

Set method modifier to protected internal, and use InternalsVisibleToAttribute

• protected internal: Access is limited to the current assembly or types derived from the containing class.