в соответствии с решением @Fried Hoeben я реализовал свой собственный класс взаимодействия по умолчанию, который сначала удаляет пробелы всех имен методов класса, а затем проверяет его на соответствие имени метода из уже оформленного Fitnesse и его пробелов.
это решение работает для методов, но для сопоставления классов, когда вы переопределяете searchPathForClass, вы должны получить все классы, которые были загружены через загрузчик классов, и украсить их имена, что слишком много и медленно
, поэтому используйте его для сопоставления методов, а не сопоставления классов:
class MyDefaultInteraction: DefaultInteraction() {
override fun findMatchingMethod(methodName: String, instance: Any, vararg args: Any?): Method? {
instance.javaClass.methods.forEach {
if(doMethodMatchWithGivenMethodNameAndArguments(it,methodName,args))
return it
}
return super.findMatchingMethod(methodName, instance, *args)
}
private fun doMethodMatchWithGivenMethodNameAndArguments(method: Method, givenMethodName: String, args: Array<out Any?>)=
(decorateMethodNameToBeMatchCandidate(givenMethodName) == decorateMethodNameToBeMatchCandidate(method.name) && doArgsMatch(method, args))
private fun decorateMethodNameToBeMatchCandidate(name:String) = name.replace(" ", "")
.replace(",", "").toLowerCase()
private fun doArgsMatch(method: Method, args: Array<out Any?>) = method.parameterTypes.size == args.size
}