Is it a ROM ?
There's a common glitch in the BW/2 ROMs where the Pokemon does not gain Exp.
If its a ROM. There's not much you can do if its a ROM you're playing on an Emulator
If its a an actual copy of the game which is played on the 3/DS System ? If it is then it could be the Game being funny. This can happen if the Save File before your was hacked and corrupted. Take it back to the Shop you got it from if you bought it from there. The Copy might be pirated so ask for a refund.
DS Region Lock
If your copy is the DS Game and your DS is a different region. Then it may not work.
Faint the opposing Pokemon
By ' battled much' , you need to have fainted the Pokemon that he was battling so thaat he'll gain Exp. At the end of the battle it will say, ' Snivy Gained ... Exp ! '