Deep copy linked list with arbitrary nodes
Var

Use the var keyword when defining local variables where the right hand side of the definition makes the type obvious. This looks cleaner and saves time when it comes to changing types during refactoring.

e.g.

LinkedListArbitraryPointer list = new LinkedListArbitraryPointer();


should be

var list = new LinkedListArbitraryPointer();


You actually do use var at points, but not consistently.

Naming

Avoid using shortened names for your variables, at a glance res is not entirely clear what it refers to, prefer actual or deepCopiedList instead. The same goes for ArbNode.

Definitely don't name your test methods TestMethodX! Find a naming style you like that's concise, detailed and consistent and stick with it.

Comments

Your comments seem to describe what you're doing (which is the job of your code) and not why you are doing it. I often find if there is some chunk of code that needs a comment explaining what it does, it can often be refactored to its own method, or made clearer somehow.

Design

The property 'Root' seems entirely out of place and unused by your code, remove it.

Additionally, I would consider making ArbNode implement IEnumerable so you can replace all your:

        ArbNode temp = root;
        while (temp != null)
        {
            ...
            temp = temp.Next;
        }


with a cleaner:

foreach(var node in root)
{
    ...
}