Well, that's what I mean. If you have both BundleA and BundleB export java interface com.acme.foobar.IData, I think these interfaces will be considered different by osgi/java runtime. That's probably why you got "method not found" exception. Another alternative is that the wrong bundle is selected at runtime. If you insist on keeping this design, I don't see other alternatives than replacing ImportPackage stanza with RequireBundle one in MANIFEST.MF.
As for resolution, consider that Tycho is a Maven extension. What it does is translating OSGi dependencies declared in MANIFEST.MF into Maven ones and using Maven to resolve them. In the default and recommended configuration (pomfirst=false) Tycho resolves dependencies declared in pom.xml against maven repositories, and dependencies originating from MANIFEST.MF against reactor and p2 repositories (called target platform). The target platform is computed
independently for each maven module by taking all p2 repositories and reactor artifacts, filtering them according to requirements defined in p2.inf or pom.xml and merging the results. I
think, Tycho would not like it if two different bundles provided the same package, and would print an error, but maybe it just prints a warning and picks one of them. In other words, if you think that a wrong bundleX is picked up, it's because that bundleX is in the target platform for bundleY and because it satisfies some requirement of bundleY. In both cases, you most likely need to fix a problem in MANIFEST.MF. Btw, one common way to package tests with tycho is to make test bundle a fragment of host bundle, but I don't have much experience with Spring and don't know if it blends well.
Disclaimer: I'm not a Maven/Tycho/Equinox/p2 developer but have been using it for a while and that's how I think it works.