Contains all elements and duplicates are taken into account
The best way would be to change data structure. Instead of using a List&lt;Int&gt; you can use a Map&lt;Int, Int&gt;. If you want to have a List&lt;Int&gt; in the beginning, that's ok, you just need to convert it to a Map&lt;Int, Int&gt; and compare the maps.
Using the nice Kotlin methods in the stdlib, we can make the code into this:
fun &lt;T&gt; containsAllSameCount(toCheck: List&lt;T&gt;, expected: List&lt;T&gt;): Boolean {
    val toCheckCountMap = toCheck.groupBy { it }.mapValues { it.value.size }
    val expectedCountMap = expected.groupBy { it }.mapValues { it.value.size }
    return expectedCountMap.all { toCheckCountMap[it.key] == it.value }
}

I have also added generics here because the same logic applies whether it's a List&lt;Int&gt;, List&lt;String&gt; and so on.
Some other notes:

Use JUnit for proper tests.
The main method in Kotlin does not need to be declared with the args, simply fun main() { will do.
Use val instead of var whenever possible.
Instead of .filter and then checking the size, use .count